Як оновити Angular CLI до останньої версії


102

Використовуючи ng --version:

@ кутова / клі: 1.0.0

яка не є останньою версією.

Оскільки у мене в системі встановлено Angular CLI глобально, для його оновлення я спробував:

npm update angular-cli -g

Але це не працює, оскільки залишається версією 1.0.0.

Відповіді:


832

Прочитавши деякі проблеми, повідомлені у сховищі 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 .

Після оновлення CLI, ймовірно, ви хочете також оновити свою кутову версію .

Примітка : якщо ви оновлюєте до кутового CLI 6+ з більш старої версії, можливо, вам доведеться прочитати це .

Edit : Крім того, якщо ви все ще на версії 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
Stuti Verma

14
Оновлення 2017 (npm @ 5): якщо вам дійсно потрібно очистити кеш: "npm cache clean --force"
Neyt

2
чому видаліть angular-cli, а не цілий @ angular / cli?
YASH DAVE

4
Запуск кеш-пам'яті кеш-пам'яті команд npm "кидає помилку" Станом на npm @ 5, кеш-пам'ять npm самолікується від проблем з корупцією та дані, витягнуті з кеша, гарантовано є дійсними. Якщо ви хочете, щоб усе було послідовно, замість цього використовуйте 'npm cache verify'. ' "якщо ви хочете змусити, можете додати --force
Pushkal Boganatham

1
@PushkalBoganatham, як заявив @neyt, вам потрібно використовувати --forceпрапор
svict4

149

ng6 + -> 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+) : містить спрощені команди

Спочатку оновіть клієнта

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. Оновлення клієнта
  2. Оновлення основного пакета основних пакетів .

4
npm cache clean --force Дійсно мені допомогли
Піні Чейні

1
Чому о, чому цієї частини немає у примітках до випуску!
Дренай

чи можете ви підтвердити те, що ви сказали про застарілий RxJS 6. Скрізь, де я дивлюся, виявляється, що v6 - це останній стабільний реліз github.com/ReactiveX/rxjs rxjs-dev.firebaseapp.com
Джої Гоф

1
@JoeyGough приємний улов! Ng7 залежить від rxjs 6.3. Дякуємо за Ваш коментар ref: github.com/angular/angular/blob/master/…
Pageii Studio

107

ви можете просто використовувати

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

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


це буде працювати для локальної кутової CLI, перевірте мою відповідь для управління глобальним
Франческо Борзі

оновив мій глобальний
кліп


22

Наступний підхід працював для мене:

npm uninstall -g @angular/cli

тоді

npm cache verify

тоді

npm install -g @angular/cli@latest

Я працюю в Windows 10, іноді доводилося користуватися: npm cache clean --forceтакож. Вам цього не потрібно робити, якщо у вас не виникає проблем під час встановлення.


2
Вказувати не потрібно @latest, оскільки за замовчуванням є останній.
Ambroise

Якщо це рішення не працює для вас: stackoverflow.com/a/58678941/8718377
veben

17

Якщо у вас виникли труднощі з керуванням вашою глобальною версією CLI , краще використовувати NVM: MAC , Windows .

Щоб оновити локальний CLI у вашому проекті 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 CLI / Angular / NodeJS / Typescriptверсіями сумісності тут

Ознайомтесь також з цим посібником Оновлення кутових проектів та update.angular.io


СТАРИЙ ВІДПОВІДЬ:
Все, що вам потрібно зробити, - це розрізняти кутовий-різний та застосовувати зміни у вашому поточному проекті.

Ось такі кроки:

  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-cli, але я думаю, що це теж може допомогти.

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

Тепер моя ng serveзнову працює, можливо, є кращий спосіб зробити все це, якщо хтось знає, будь ласка, поділіться, тому що це біль, що стосується всіх проектів, які потребують оновлення.


виглядає більше як доповнення до моєї відповіді, ніж відповіді, тож, можливо, ви можете перемістити її як коментар нижче моєї відповіді?
Франческо Борзі

7
sry, ти маєш рацію, але мені потрібно 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, вона генерує помилку, кажучи, що "Ваша глобальна кутова версія CLI (1.7.3) більша, ніж ваша локальна версія (1.4.9)" . Зауважте, що angular-cli, @ angular / cli та @ angular / cli @ latest - це два різних кліпи. Це вирішує це видалення всіх cli та встановлення останнього кутового кліпу за допомогою npm install -g @ angular / cli @ latest

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.