2016-09-19 2 views
1

Если я обновляю файл package.json в приложении рабочего процесса NPM, какую команду выполняют существующие пользователи для обновления своих локальных зависимостей node_modules?Что команда NPM должна запускать пользователям, если файл package.json был обновлен?

Чтобы начать использовать его, они бегут:

$ npm install 

Так что они работают, если есть изменения в файл package.json? Или они просто удаляют папку и повторно запускают команду npm install?

ответ

3

Для повторной проверки package.json и установить уточненные версии или новые пакеты:

$ npm install 

Единственное это не будет сделать, это удалить пакеты, которые не входят в пакет. JSON. Чтобы сделать это, выполните команду:

$ npm prune 

Если вы только измененные версии пакета и не добавлены новые пакеты:

$ npm update 

Если вы вы обновили конкретные версия упаковки:

$ npm update {packagename} 
+0

Привет, Брэндон, спасибо! Я поставлю это в документации. –

+0

Что делать, если пользователь не хочет проверять историю 'package.json', чтобы увидеть, были ли вещи добавлены или удалены, и просто хочет запустить команду, чтобы получить' node_modules' в соответствии с 'package.json'? – binki

+0

Почему вам все равно, проверена ли история package.json? Это выполняет работу и синхронизирует загруженные пакеты в соответствии с package.json. – brandonscript

0

Вы должны либо сделать

npm install && npm prune 

или

npm upgrade && npm prune 

npm install будет быстрее, чем npm upgrade, потому что она обновляет только пакеты в node_modules если package.json требует более новой версии. npm uprade, с другой стороны, будет загружать обновления зависимостей, если они доступны, что может включать исправления ошибок. Для ≥npm-5 вы должны использовать npm install, потому что npm upgrade будет иметь побочный эффект изменения любого файла package-lock.json, который не следует изменять, если только вы не являетесь его сопровождающим.

npm prune необходимо, потому что обновления до package.json могут удалять зависимости. Если вы не запустили npm prune, пакеты, установленные предыдущей версией package.json, останутся в каталоге node_modules, который не будет там, если вы только что загрузили/клонировали проект и запустили npm install. Из-за того, как некоторые пакеты условно называют require() или даже сканируют каталог node_modules, оставляя пакеты, которые были удалены с package.json, могут привести к неожиданному поведению.