Как обновить 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 .
Студия Pageii
источник
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
Wdavilaneto
источник
Кажется, это обновляет интерфейс командной строки до последней минорной версии.
Алексей
22

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

npm uninstall -g @angular/cli

затем

npm cache verify

затем

npm install -g @angular/cli@latest

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

Enayat
источник
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 )
kuncevic.dev
источник
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

АРХАН
источник