Как обновить Angular CLI до последней версии


102

С помощью ng --versionя получил:

@ угловой / cli: 1.0.0

это не последняя доступная версия.

Поскольку в моей системе глобально установлен Angular CLI, я попытался обновить его:

npm update angular-cli -g

Но это не работает, потому что остается до версии 1.0.0.

Ответы:


834

Прочитав некоторые проблемы в репозитории GitHub, я нашел решение.

Чтобы обновить пакет angular-cli, глобально установленный в вашей системе, вам необходимо запустить:

npm uninstall -g @angular-cli
npm install -g @angular/cli@latest

В зависимости от вашей системы вам может потребоваться префикс к вышеуказанным командам с помощью sudo.

Кроме того, скорее всего, вы захотите также обновить локальную версию проекта, потому что внутри вашего каталога проекта он будет выбран с более высоким приоритетом, чем глобальный:

rm -rf node_modules
npm uninstall --save-dev @angular-cli
npm install --save-dev @angular/cli@latest
npm install

спасибо grizzm0 за указание на это на GitHub .

После обновления вашего интерфейса командной строки вы, вероятно, захотите обновить и версию Angular .

Примечание : если вы обновляете угловой CLI 6+ от старой версии, вам могут понадобиться , чтобы прочитать это .

Изменить : Кроме того, если вы все еще использовали версию cli 1.x, вам необходимо преобразовать ее angular-cli.jsonв angular.json, что вы можете сделать с помощью следующей команды:

ng update @angular/cli --from=1.7.4 --migrate-only

(проверьте это для более подробной информации).


3
Педантичное предупреждение: вы можете найти более подробную информацию об изменениях между версиями на вкладке «Релизы» на GitHub. Ссылка: github.com/angular/angular-cli/releases
Стути Верма

14
Обновление 2017 (npm @ 5): если вам действительно нужно очистить кеш: «npm cache clean
--force

3
зачем удалять angular-cli, а не весь @ angular / cli?
ЯШ ДЕЙВ 01

4
Выполнение команды npm cache clean вызывает ошибку: «Начиная с npm @ 5, кеш npm самовосстанавливается от проблем с повреждением, и данные, извлеченные из кеша, гарантированно являются действительными. Если вы хотите убедиться, что все согласовано, используйте вместо этого npm cache verify. "если вы хотите заставить, вы можете добавить
--force

1
@PushkalBoganatham, как заявил @neyt, вам нужно использовать --forceфлаг
svict4

150

кg6 + -> 7.0

Обновить RxJS (зависит от RxJS 6.3)

npm install -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json

удалять rxjs-compat

Затем обновите основные пакеты и Cli:

ng update @angular/cli @angular/core

(Необязательно: обновите Node.js до версии 10, которая поддерживается в NG7)

ng6 + (Cli 6.0+) : упрощенные команды

Сначала обновите свой Cli

npm install -g @angular/cli
npm install @angular/cli
ng update @angular/cli

Затем обновите свои основные пакеты

ng update @angular/core

Если вы используете RxJS, запустите

ng update rxjs

Он обновит RxJS до версии 6 и установит rxjs-compatпакет под капотом.

Если вы столкнулись с ошибками сборки, попробуйте установить вручную:

npm i rxjs-compat
npm i @angular-devkit/build-angular

Наконец, проверьте свою версию

ng v

Примечание по производственной сборке:

ng6 больше не используется intlвpolyfills.ts

//remove them to avoid errors
import 'intl';
import 'intl/locale-data/jsonp/en';

ng5 + (Cli 1.5+)

npm install @angular/{animations,common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router}@next typescript@2.4.2 rxjs@'^5.5.2'
npm install typescript@2.4.2 --save-exact

Примечание:

  1. Поддерживаемая версия Typescript для Cli 1.6 на момент написания - до 2.5.3.
  2. Использование @next обновляет пакет до бета-версии, если она доступна. Используйте @latest, чтобы получить последнюю не бета-версию.

После обновления глобального и локального пакетов очистите кеш, чтобы избежать ошибок:

npm cache verify (recommended)
npm cache clean (for older npm versions)

Вот официальные ссылки:

  1. Обновление Cli
  2. Обновление основных пакетов core package .

4
npm cache clean --force Мне действительно помогли
Пини Чейни

1
Почему, ну почему этой части нет в примечаниях к выпуску!
Дренай

Не могли бы вы подтвердить то, что вы сказали о том, что RxJS 6 устарел. Куда бы я ни посмотрел, кажется, что v6 - это последний стабильный выпуск github.com/ReactiveX/rxjs rxjs-dev.firebaseapp.com
Джои Гоф

1
@JoeyGough хороший улов! Ng7 зависит от rxjs 6.3. Спасибо за ваш комментарий. ссылка: github.com/angular/angular/blob/master/…
Pageii Studio

108

вы можете просто использовать

npm install -g angular-cli - если ты впервые

npm install -g @angular/cli@latest - если вы уже установили, значит для обновления


37

Мощная команда устанавливает и заменяет последний пакет.

У меня была похожая проблема. Я починил это.

 npm install -g @angular/cli@latest

и

npm install --save-dev @angular/cli@latest

введите описание изображения здесь


это будет работать для локального интерфейса командной строки Angular, проверьте мой ответ, чтобы улучшить глобальный
Francesco

обновил мой глобальный
клиент

35

Эта команда отлично работает:

npm upgrade -g @angular/cli

Кажется, это обновляет интерфейс командной строки до последней минорной версии.
Алексей

22

У меня сработал следующий подход:

npm uninstall -g @angular/cli

затем

npm cache verify

затем

npm install -g @angular/cli@latest

Я работаю на Windows 10, я иногда приходилось использовать: npm cache clean --forceа. В этом нет необходимости, если во время установки у вас нет проблем.


2
Указывать не нужно @latest, по умолчанию используется последняя версия.
Амбруаз Рабье

Если это решение не работает для вас: stackoverflow.com/a/58678941/8718377
veben

17

Если у вас возникли трудности с управлением вашей глобальной версией CLI , лучше использовать NVM: MAC , Windows .

Чтобы обновить локальный интерфейс командной строки в вашем проекте Angular, выполните следующие действия:

Начиная с CLI v6 вы можете просто запустить ng update, чтобы ваши зависимости автоматически обновлялись до новой версии.

ng update @angular/cli

С ng updateиногда вы можете захотеть добавить --forceфлаг.

Вы также можете передать --allфлаг, чтобы обновить все пакеты одновременно.

ng update --all --force

Если вы хотите просто перенести CLI, просто запустите это:

ng update @angular/cli --migrateOnly

Вы также можете передать флаг --from=from- версию, с которой нужно перейти, например --from=1.7.4. Этот флаг доступен только при обновлении одного пакета и только при миграции.

После завершения обновления убедитесь, что версия машинописного текста, которую вы установили, поддерживается вашей текущей версией angular, в противном случае вам может потребоваться понизить версию машинописного текста. Также имейте в виду, что обычно последняя версия angular не поддерживает последнюю версию машинописного текста.

Ознакомьтесь Angular CLI / Angular / NodeJS / Typescriptс версиями совместимости здесь

Также ознакомьтесь с этим руководством. Обновление ваших проектов Angular и update.angular.io


СТАРЫЙ ОТВЕТ:
Все, что вам нужно сделать, это сравнить с angular-cli-diff и применить изменения в вашем текущем проекте.

Вот шаги:

  1. Скажем, вы переходите с 1.4. до 1.5, то вы делаете https://github.com/cexbrayat/angular-cli-diff/compare/1.4.0...1.5.0
  2. нажмите на File changedвкладку
  3. Примените изменения к вашему текущему проекту.
  4. npm install / yarn
  5. Протестируйте все npm scripts( подробнее здесь: https://stackoverflow.com/a/45431592/415078 )

14

В дополнение к ответу @ShinDarth .

Я сделал то, что он сказал, но мой пакет не обновил версию angular, и я знаю, что эта статья об этом angular-cli, но я думаю, что это тоже может помочь.

  • поэтому после выполнения того, что сказал @ShinDarth выше, чтобы исправить мою угловую версию, мне пришлось создать новый проект с -ng new projectnameсозданным пакетом.
  • скопируйте новый пакет, затем вставьте новый пакет во все пакеты проектов, требующие обновления (не забудьте добавить зависимости, которые у вас были, и изменить имя в первой строке), или вы можете просто изменить версии вручную без копирования и вставки.
  • затем беги -npm install.

Теперь мой ng serveснова работает, может быть, есть лучший способ сделать все это, если кто-то знает, поделитесь, пожалуйста, потому что это боль, связанная со всеми проектами, которые нуждаются в обновлении.


больше похоже на дополнение к моему ответу, чем на ответ, так что, может быть, вы можете переместить его в качестве комментария под моим ответом?
Francesco

7
простите, вы правы, но мне нужно 50 репутации, чтобы прокомментировать ваш ответ.
Леонардо Соуза Пайва

9

Чтобы обновить Angular CLI до новой версии, вы должны обновить как глобальный пакет, так и локальный пакет вашего проекта.

Глобальный пакет:

npm uninstall -g @angular/cli
npm cache clean
# if npm version is > 5 then use `npm cache verify` to avoid errors (or to avoid using --force)
npm install -g @angular/cli@latest

Пакет локального проекта:

rm -rf node_modules dist # use rmdir /S/Q node_modules dist in Windows Command Prompt; use rm -r -fo node_modules,dist in Windows PowerShell
npm install --save-dev @angular/cli@latest
npm install

Источник: Github


3

В моем случае я установил angular-cli локально, используя npm install --save-dev angular-cli. Итак, когда я использую команду npm install -g @ angular / cli, она генерирует ошибку, говоря, что «Ваша глобальная версия Angular CLI (1.7.3) больше, чем ваша локальная версия (1.4.9)» . Обратите внимание, что angular-cli, @ angular / cli и @ angular / cli @ latest - это два разных cli. Что решает это, так это удалить все cli, а затем установить последнюю версию angular cli, используя npm install -g @ angular / cli @ latest

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.