Npm check updates: npm-check-updates — npm
Содержание
Команда «npm update» против пакета «npm-check-updates»
В чем разница между командой npm update
и пакетом npm-check-updates ? Является ли это полностью безопасным для использования последнего?
Похоже, что после выполнения npm update
не все пакеты обновляются, поэтому кажется, что он неполон. Многие другие популярные ответы SO относятся к использованию сначала предыдущей команды, а затем последней, но я все еще не понимаю, что делает последняя, чего не делает предыдущая.
npm-update
Поделиться
Источник
João Pimentel Ferreira
17 июля 2019 в 06:19
1 ответ
- Не удается обновить пакеты NPM с помощью команды npm update/upgrade-g
Работает версия Archlinux + Gnome-Shell 3.20, NodeJS 5.10.1 NPM 3.8.6. При запуске sudo npm update -g или sudo npm upgrade -g terminal дает npm ERR! addLocal Could not install /build/semver/src/semver-5.1.0.tgz npm ERR! addLocal Could not install /build/semver/src/semver-5.1.0.tgz npm ERR!…
- Изменение исходного кода в Jenkins с npm-check-updates
Я пытаюсь заставить Jenkins вытащить мой git repo, запустить npm-check-updates , запустить тесты и сборки, а затем вернуться в репо. По большей части каждая отдельная часть, кажется, работает, однако задача npm-check-updates не повторяет обновления моего package.json Вот соответствующая часть…
4
npm-check-updates
изменит только ваш файл package.json
. Как только вы запустите эту команду, вам нужно будет запустить отдельный npm install
, чтобы захватить эти изменения. С другой стороны, npm update
сделает все это и не даст вам возможности проверить, что обновляется заранее.
Раньше было досадно, что npm update
не обновил файл package.4.0.1
grunt-sass ~2.0.0 → ~3.0.2
Run ncu -u to upgrade package.json
Никаких изменений в моем проекте не было сделано — он просто сказал мне, что нужно обновить. Вот почему я предпочитаю npm-check-updates
. По умолчанию он не вносит никаких изменений.
Если вы DO хотите, чтобы изменения были сделаны ncu, просто запустите ncu -u
. Это обновит ваш package.json
, но вам все равно нужно будет запустить npm install
, чтобы папка node_modules
была обновлена до ваших новых пакетов.
Поделиться
Dan Atkinson
18 июля 2019 в 09:22
Похожие вопросы:
Package.json не найдена ошибка при обновлении с помощью npm-check-updates
Я пытаюсь обновить свои пакеты/модули узлов, и многие люди (многие из StackOverflow) рекомендовали npm-check-updates, поэтому я загрузил его через npm и запустил. Это дало мне эту ошибку, и я не…
Обновление модулей NPM в грунт
Я пытаюсь автоматизировать обновление новых модулей узлов, но обновление npm, похоже, не хочет корректно работать изнутри grunt, также обновляя файл package.json с новой версией. Я хочу сделать это…
NPM обновить все до последней версии
Я хочу обновить все свои пакеты до последней версии: npm outdated Результат: Package Current Wanted Latest Location cordova 3.4.0-0.1.0 3.6.3-0.2.13 3.6.3-0.2.13 cordova commander 2.0.0 2.0.0 2.3.0…
Не удается обновить пакеты NPM с помощью команды npm update/upgrade-g
Работает версия Archlinux + Gnome-Shell 3.20, NodeJS 5.10.1 NPM 3.8.6. При запуске sudo npm update -g или sudo npm upgrade -g terminal дает npm ERR! addLocal Could not install…
Изменение исходного кода в Jenkins с npm-check-updates
Я пытаюсь заставить Jenkins вытащить мой git repo, запустить npm-check-updates , запустить тесты и сборки, а затем вернуться в репо. По большей части каждая отдельная часть, кажется, работает,…
npm установка завершается неудачно после npm-check-updates
Команда установки npm не на следующий package.json: { name: xxxxxxxxx, version: 0.6.8, description: xxxxxx, main: gulpfile.js, scripts: { test: echo \Error: no test specified\ && exit 1 },…
Как использовать npm-check
Я играл с node.js и учился, играя с Spotify API. Spotify предоставил пример исходного кода, который я создавал, но теперь я хочу сделать свою собственную вещь. В node_module есть много модулей для…
Почему zsh не распознает команду из глобально установленного пакета npm?
После установки oh-my-zsh и повторной установки узла и npm я устанавливаю npm-check-updates глобально и пытаюсь вызвать ‘ncu’ (команда npm-check-updates). Тем не менее, я получаю сообщение об…
npm: команда не найдена centos 7
У меня есть centos 7 и уже установлен npm на моей машине, но когда я пытаюсь npm команда его показывает мне ошибку как npm: команда не найдена [vinit@NL577 ~]$ sudo yum install npm [sudo] password…
Установлено npm-check -g, получение bash: npm-check: команда не найдена при запуске
ОС: Windows 10, Terminal: Git-Bash Я установил npm-check https://www.npmjs.com/package/npm-check , как с флагом-g, так и с devDependency. Когда я пытаюсь запустить npm-check в terminal, я получаю:…
npm-update — Команда «npm update» против пакета «npm-check-updates»
В чем разница между командой npm update
и пакетом npm-check-updates? Насколько безопасно пользоваться последним?
Кажется, что после выполнения npm update
не все пакеты обновляются, поэтому кажется, что он неполный. Многие другие популярные ответы SO относятся к использованию сначала предыдущей команды, а затем последней, но я все еще не понимаю, что последняя делает то, что приора нет.
4
João Pimentel Ferreira
17 Июл 2019 в 09:19
2 ответа
Лучший ответ
Что ж, после некоторого расследования и после большого количества дезинформации я думаю, что наконец-то понял., команда npm install
не будет обновлять основную версию, тогда как npm-check-updates
будет. Посмотрите это 5-минутное видео npm, потому что оно очень проясняет ситуацию.
0
João Pimentel Ferreira
25 Дек 2020 в 20:26
npm-check-updates
изменит только ваш файл package.json
. После того, как вы запустите эту команду, вам нужно будет запустить отдельный npm install
, чтобы получить эти изменения. С другой стороны, npm update
сделает все это и не даст вам возможности заранее проверить, что обновляется.
Раньше раздражало то, что npm update
не обновлял файл package.json
, но с 5.0.0 это уже не так. И еще когда-то он также смотрел на зависимости пакетов, которые вызывали бесконечные проблемы для многих людей.4.0.1
grunt-sass ~2.0.0 → ~3.0.2
Run ncu -u to upgrade package.json
В мой проект не было внесено никаких изменений — он просто сказал мне, что нужно обновить. Вот почему я предпочитаю npm-check-updates
. По умолчанию никаких изменений не производится.
Если вы ДЕЙСТВИТЕЛЬНО хотите, чтобы изменения выполнялись с помощью ncu, просто запустите ncu -u
. Это обновит ваш package.json
, но вам все равно нужно будет запустить npm install
, чтобы папка node_modules
была обновлена до ваших новых пакетов.
4
Dan Atkinson
18 Июл 2019 в 12:15
Проблемы с node js npm ncu, что делать? — Хабр Q&A
Переустановил node js и не могу установить ncu «npm install -g npm-check-updates»
PS D:\project\new_project> npm install -g npm-check-updates
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated [email protected]: this library is no longer supported
C:\Users\inefa\AppData\Roaming\npm\ncu -> C:\Users\inefa\AppData\Roaming\npm\node_modules\npm-check-updates\bin\cli.js
npm ERR! code EEXIST
npm ERR! path C:\Users\inefa\AppData\Roaming\npm\node_modules\npm-check-updates\bin\cli.js
npm ERR! dest C:\Users\inefa\AppData\Roaming\npm\npm-check-updates
npm ERR! EEXIST: file already exists, cmd shim 'C:\Users\inefa\AppData\Roaming\npm\node_modules\npm-check-updates\bin\cli.js' -> 'C:\Users\inefa\AppData\Roaming\npm\npm-check-updates'
npm ERR! File exists: C:\Users\inefa\AppData\Roaming\npm\npm-check-updates
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\inefa\AppData\Roaming\npm-cache\_logs\2021-07-27T16_42_10_781Z-debug.log
Так же при использовании npm install
PS D:\project\new_project> npm i
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\glob-watcher\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\watchpack-chokidar2\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
audited 1705 packages in 10.701s
79 packages are looking for funding
run `npm fund` for details
found 12 vulnerabilities (1 low, 6 moderate, 5 high)
run `npm audit fix` to fix them, or `npm audit` for details
PS D:\project\new_project>
Что делать?
Npm проверить и обновить пакет, если необходимо
Нам нужно интегрировать тест-драйв Karma в TeamCity, и для этого я хотел бы предоставить sys-инженерам небольшой script (powershell или что-то еще), что:
выберите нужный номер версии из некоторого конфигурационного файла (думаю, я могу поместить его в качестве комментария прямо в
karma.conf.js
)проверить, установлена ли определенная версия бегуна кармы в npm global repo
если это не так, или установленная версия старше желаемого: выберите и установите правильную версию
запустите его:
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
Итак, мой реальный вопрос: «Как можно проверить в script, если желаемая версия пакета установлена?». Если вы делаете чек или можете просто позвонить npm -g install
каждый раз?
Я не хочу всегда проверять и устанавливать последнюю доступную версию, потому что другие значения конфигурации могут стать несовместимыми
ОТВЕТЫ
Ответ 1
Чтобы проверить, является ли какой-либо модуль в проекте «старым»:
npm outdated
‘устаревшая’ проверит каждый модуль, определенный в package.json
, и выяснит, есть ли более новая версия в реестре NPM.
Например, скажем, xml2js 0.2.6
(расположенный в node_modules
в текущем проекте) устарел, поскольку существует более новая версия (0.2.7). Вы бы увидели:
[email protected] node_modules/xml2js current=0.2.6
Чтобы обновить все зависимости, если вы уверены, что это желательно:
npm update
Или обновить отдельную зависимость, например xml2js
:
npm update xml2js
Ответ 2
npm outdated
идентифицирует пакеты, которые должны быть обновлены, и npm update <package name>
может использоваться для обновления каждого пакета. Но до [email protected] npm update <package name>
не будет обновлять версии в вашем package.json, что является проблемой.
Лучший рабочий процесс заключается в следующем:
- Определить устаревшие пакеты
- Обновите версии в вашем package.json
- Запустите
npm update
, чтобы установить последние версии каждого пакета
Проверьте npm-check-updates
, чтобы помочь с этим рабочим процессом.
- Установите npm-check-updates
- Запустите
npm-check-updates
, чтобы увидеть, какие пакеты устарели (в основном то же самое, что иnpm outdated
) - Запустите
npm-check-updates -u
, чтобы обновить все версии в вашем package.json (это волшебный соус) - Запустите
npm update
как обычно, чтобы установить новые версии ваших пакетов на основе обновленного package.json
Ответ 3
Существует также «свежий» модуль, называемый npm-check
:
NPM-проверка
Проверьте устаревшие, неправильные и неиспользуемые зависимости.
Он также обеспечивает удобный интерактивный способ обновления зависимостей.
Ответ 4
Таким образом, нет необходимости обновлять локальные package.json
файл.
Обратите внимание, что это обновит ваш пакет до последней версии.
Если вы напишете какую-нибудь версию в файле
package.json
и выполните:npm update package_name
В этом случае вы получите только следующую стабильную версию (хотите) относительно версии, которую вы написали в вашем файле
package.json
.
И с помощью npm list (package_name)
вы можете узнать текущую версию своих локальных пакетов.
Ответ 5
Один легкий шаг:
$ npm я -g npm-check-updates && ncu -u && npm i
Это все. Все версии пакета в package.json
будут самыми последними.
Редактировать:
Что здесь происходит?
Установка пакета, который проверяет обновления для вас.
Используйте этот пакет, чтобы обновить все версии пакета в вашем
package.json
(-a сокращенно — -u pdateAll).Установите все новые версии пакетов.
Ответ 6
Проверьте устаревшие пакеты
npm outdated
Проверьте и выберите пакеты для обновления
npx npm-check -u
Npm устаревшие IMG
npx npm-check -u img
Ответ 7
Используйте приведенную ниже команду для проверки устаревших или уязвимостей в ваших модулях узла.
npm audit
Если обнаружены какие-либо уязвимости, используйте приведенную ниже команду, чтобы исправить все проблемы.
npm audit fix
Если это не работает для вас, попробуйте
npm audit fix -f
, эта команда почти исправит все уязвимости. Некоторые зависимости или devDependencies заблокированы в файле package-lock.json, поэтому мы используем флаг-f
для принудительного их обновления.Если вы не хотите использовать принудительное исправление аудита, вы можете вручную исправить версии зависимостей, изменив их в файлах package-lock.json и package.json. Затем запустите ‘npm update && npm upgrade’
Ответ 8
При установке пакетов npm (как глобально, так и локально) вы можете определить конкретную версию с помощью синтаксиса @version
для определения версии, которая будет установлена.
Другими словами, делая:
npm install -g [email protected]
обеспечит установку только 0.9.2 и не будет переустанавливаться, если он уже существует.
В качестве одного из советов я бы посоветовал избегать установки глобальной npm, где бы вы ни находились. Многие люди не понимают, что если зависимость определяет файл bin, он устанавливается на. / node_modules/.bin/. Часто его очень легко использовать в локальной версии установленного модуля, который определен в вашем пакете. Json. Фактически, скрипты npm добавят на ваш путь. /node_modules/.bin.
В качестве примера, вот package.json, который, когда я запустил npm install && npm test
, установит версию кармы, определенную в моем пакете .json, и использую эту версию кармы (установленную в node_modules/. bin/карма) при запуске test
script:
{
"name": "myApp",
"main": "app.js",
"scripts": {
"test": "karma test/*",
},
"dependencies": {...},
"devDependencies": {
"karma": "0.9.2"
}
}
Это дает вам преимущество вашего package.json, определяющего версию кармы, которую вы хотите использовать, и не нужно сохранять эту конфигурацию в глобальном масштабе в вашем поле CI.
Ответ 9
Никаких дополнительных пакетов, чтобы просто проверить устаревшие и обновить те, которые есть, эта команда сделает:
npm install $(npm outdated | cut -d' ' -f 1 | xargs -I '$' echo '[email protected]' | xargs echo)
Ответ 10
Чтобы действительно обновить только один пакет, установите NCU, а затем запустите его только для этого пакета. Это столкнется с реальным последним.
npm install -g npm-check-updates
ncu -f your-intended-package-name -u
Ответ 11
Начиная с [email protected] 0+ вы можете просто сделать:
npm update <package name>
Это автоматически обновит файл package.json
. Нам не нужно обновлять последнюю версию вручную, а затем использовать npm update <package name>
Вы все еще можете получить старое поведение, используя
npm update --no-save
( Ссылка)
Ответ 12
Если вы используете webpack для компоновки вашего проекта, есть плагин с именем webpack-package-manager, который может автоматически отображать модули, используемые в проекте, последнюю версию и комбинировать package.json.
Команда «npm update» против пакета «npm-check-updates»
npm-check-updates
изменит только ваш файл package.json
. После того, как вы запустите эту команду, вам нужно будет запустить отдельную npm install
, чтобы получить эти изменения. С другой стороны, npm update
сделает все это и не даст вам возможности заранее проверить, что обновляется.
Раньше раздражало, что npm update
не обновлял пакет .json
, но в версии 5.0.0 это уже не так. И еще когда-то он также смотрел на зависимости пакетов, которые вызывали бесконечные проблемы для многих людей.
Ключевое различие между ними заключается в том, что вы можете запустить ncu
(псевдоним для npm-check-updates
) и по умолчанию он не будет обновлять ваши пакеты — просто скажите вам, какие пакеты необходимо обновить.
Например, ниже представлен результат одного из моих старых проектов. Здесь вы можете видеть, что несколько пакетов grunt
устарели, в основном потому, что я больше не работаю над этим проектом, предпочитаю писать сценарии сборки в npm и у меня нет времени на обновление старых проектов.4.0.1
grunt-sass ~ 2.0.0 → ~ 3.0.2
Запустите ncu -u, чтобы обновить package.json
В мой проект не было внесено никаких изменений — он просто сказал мне, что нужно обновить. Вот почему я предпочитаю npm-check-updates
. По умолчанию никаких изменений не производится.
Если вы DO хотите, чтобы изменения выполнялись с помощью ncu, просто введите ncu -u
. Это обновит ваш package.json
, но вам все равно нужно будет запустить npm install
, чтобы папка node_modules
была обновлена до ваших новых пакетов.
Обновите все зависимости Node.js до их последней версии
При установке пакета с помощью npm install
последняя доступная версия пакета загружается и помещается в папку node_modules
и соответствующую запись добавляется в файлы package. 5.1.3.1
, что для правил управления версиями npm означает, что npm может обновляться до исправлений и второстепенных выпусков: 1.3.2
, 1.4.0
и так далее.
Если есть новый минорный выпуск или выпуск исправления, и мы набираем npm update
, установленная версия обновляется, и файл package-lock.json
старательно заполняется новой версией.
Начиная с версии npm 5.0.0, npm update
обновит package.json
с обновленной версией. Используйте npm update --no-save
, чтобы не обновлять пакет .json
.
Для обнаружения новых выпусков пакетов вы запускаете npm outdated
.
Вот список нескольких устаревших пакетов в одном репозитории, которые долгое время не обновлялись:
Некоторые из этих обновлений являются основными выпусками. Запуск npm update
не обновит их версию. Основные выпуски никогда не обновляются таким образом, потому что они (по определению) вносят критические изменения, а npm
хочет избавить вас от неприятностей.
Чтобы обновить все пакеты до новой основной версии, установите глобально пакет npm-check-updates
:
BASHcopy
npm install -g npm-check-updates
, затем запустите его:
BASHcopy
ncu -u
это обновит все подсказки версии в файле package.json
до зависимостей
и devDependencies
, так что npm может установить новую основную версию.
Теперь вы готовы к запуску обновления:
BASHcopy
npm update
Если вы только что загрузили проект без зависимостей node_modules
и хотите сначала установить блестящие новые версии, просто запустите
BASHcopy
npm install
3 инструмента для обновления пакетов npm — Scotch.io
Поддержание пакетов npm в актуальном состоянии — рутинная работа. Иногда это может превратиться в ужасную рутину, поскольку обновление пакетов до нового основного номера потенциально может сломать ваши приложения.
- Даже несмотря на то, что я могу сломать все мое приложение, я предпочитаю оставаться на последних номерах версий. Будь проклята опасность!
Примечание. Всегда просматривайте примечания к выпуску / журнал изменений для новых версий, чтобы проверить, есть ли какие-либо критические изменения.
Вот 3 инструмента, которые помогут поддерживать эти пакеты в актуальном состоянии.
Version Lens — это расширение, о котором я узнал совсем недавно. Это мой любимый инструмент из этой статьи, так как он самый простой в использовании.
После установки Version Lens вы сможете зайти в свой package.json
и увидеть точные числа прямо над каждым пакетом в зависимостях
или devDependencies
.
Версия
Lens конвертирует наш пакет .json
Теперь мы видим встроенные номера версий.Мы также можем щелкнуть, чтобы использовать конкретную версию.
Начать с JavaScript
бесплатно!
Вот его гифка в действии:
Расширение npm — это пакет, который я использовал до того, как нашел Version Lens. Это позволяет вам навести курсор на пакет и увидеть его последнюю версию. Version Lens упрощает и ускоряет этот процесс.
У меня все еще установлено расширение npm, но я больше не использую его для проверки номеров пакетов.
Последний инструмент для проверки обновлений пакета npm — это инструмент командной строки.
npm-check-updates позволяет нам установить пакет npm и запустить команду. Затем мы можем увидеть обновленные пакеты в нашей командной строке.
Для установки:
npm i -g npm-check-updates
Использовать:
ncu
Мы получим список всех зависимостей, которые можно обновить:
Затем вы можете запустить ncu -u
, чтобы обновить эти пакеты. Вы можете обновить один пакет, набрав ncu vue
.
Это немного больше, чем использование Version Lens, но стоит отметить.
Поддержание пакетов npm в актуальном состоянии — это то, что вы должны делать с осторожностью. Убедитесь, что у вас есть тесты, чтобы выявить любые нежелательные эффекты, которые могут возникнуть при обновлении пакетов.
Понравилась эта статья?
Подпишитесь на @chris__sev в Twitter
npm-check-updates: Версии | Openbase
Взлом
-
--semverLevel major
теперь--target minor
.--semverLevel minor
теперь--target patch
. Это изменение было сделано для обеспечения более интуитивной семантики для--semverLevel
(теперь--target
). Большинство людей полагали, что это означает исчерпывающую верхнюю границу, поэтому теперь он отражает это. a2111f4c2 - Программное использование:
run
теперь по умолчаниюsilent: true
вместоloglevel: 'silent
, еслиloglevel
не указан явно. Если вы переопределитеsilent
илиloglevel
, это может повлиять на поведение журнала.423e024
Устарело
Параметры, которые контролировали целевую версию (верхнюю границу) обновлений, были объединены в --target
. Старые параметры имеют псевдоним с предупреждением об устаревании и будут удалены в следующей основной версии. Никакие функциональные возможности не были удалены.
-
--greatest
: переименован в--targetmost
-
- новейшая
: переименована в- цель новейшая
-
--semverLevel
: переименовано в--target
См .: 7eca5bf3
Функции
Режим доктора
# 722
Использование: ncu --doctor [-u] [параметры]
Итеративно устанавливает обновления и запускает тесты для выявления неисправных обновлений.Добавьте -u
для выполнения (изменяет файл пакета, файл блокировки и node_modules).
Точнее:
- Выполняет
npm install
иnpm test
, чтобы убедиться, что тесты проходят успешно. - Запускает
ncu -u
для оптимального обновления всех зависимостей. - Если тесты пройдут, ура!
- Если тесты не пройдены, восстанавливает файл пакета и файл блокировки.
- Для каждой зависимости установите обновление и запустите тесты.
- При обнаружении критического обновления сохраняет частично обновленный пакет.А теперь давайте определим виновника, не так ли?
Восстановление package.json
Восстановление package-lock.json
npm install
npm install —no-save [email protected]
npm запустить тест
✓ реагировать 15.0.0 → 16.0.0
npm install —no-save [email protected]
npm запустить тест
✗ реакция-редукция 6.0.0 → 7.0.0
Сохранение частично обновленного package.json
URL-адреса GithubДобавлена поддержка URL-адресов GitHub.
См .: f0aa792a4
Пример:
{ "dependencies": { «мел»: «https://github.com/chalk/chalk#v2.0,0 " } }
npm псевдонимы
Добавлена поддержка псевдонимов npm.
См .: 0f6f35c
Пример:
{ "dependencies": { "запрос": "npm: [email protected]" } }
Владелец изменен
# 621
Использование:
ncu --ownerChanged
Проверьте, изменился ли пользователь npm, опубликовавший пакет, с текущей на обновленную версию.
Выходные значения:
- Смена собственника:
* Смена собственника *
- Собственник не сменился: нет выхода
- Информация о владельце недоступна:
* неизвестно *
Пример:
$ ncu - Владелец Изменен Проверка / tmp / package.8.1.3 * сменился владелец * Запустите ncu -u, чтобы обновить package.json
Совершает
https://github.com/raineorshine/npm-check-updates/compare/v7.1.1…v8.0.0
пакетов обновления npm-check-updates в package.json и bower.json | Команда ncu в nodejs
В этом сообщении блога мы собираемся изучить npm-check-updates пакет npm для обновления зависимостей в package.json и bower.json.
npm package update
npm check updates package используется для проверки всех зависимостей в пакете.json проекта node js и обновите зависимости до последних версий. Этот пакет работает путем обновления следующих файлов конфигурации
Эта библиотека решает все перечисленные ниже проблемы приложения NodeJS
- Как обновить все зависимости в package.json до последних версий?
- Как обновить devDependencies в package.json до последних версий
- Обновить зависимости в bower.json до последней версии
- npm проверить и обновить пакет, если необходимо
Установить npm-check-updates или пакет ncu глобально
node
иКоманда npm
должна работать перед установкой npm-check-updates`.Найдите установленный узел и версию npm, чтобы проверить, установлен ли онB: \ cloudhadoop> node --version Версия 14.17.0 B: \ cloudhadoop> npm --version 7.11.1
Установите npm-check-updates глобально с помощью команды npm install.
npm i -g npm-check-updates
После установки становится доступной команда
ncu
.B: \ cloudhadoop> ncu --version 2.14.1
Как проверить устаревшую зависимость в package.json
Чтобы обновить любые пакеты до последних версий, во-первых, вам необходимо проверить устаревшую старую версию. Пожалуйста, введите
npm устаревшую команду
.В приведенном ниже примере проверяются устаревшие зависимости в angular package.json
B: \ Workspace \ blog \ angularapp> npm outdated Текущее требуемое последнее местоположение пакета @ angular-devkit / build-angular 0.7.5 0.7.5 0.8.5 angularapp @ angular / cli 6.1.5 6.1.5 6.2.5 ангуларапп @ типы / узел 8.9.5 8.9.5 10.12.0 angularapp codelyzer 4.2.1 4.2.1 4.5.0 angularapp жасмин-ядро 2.99.1 2.99.1 3.2.1 angularapp карма 1.7.1 1.7.1 3.0.0 ангуларапп карма-жасмин-HTML-репортер 0.2.2 0.2.2 1.3.1 angularapp транспортир 5.3.2 5.3.2 5.4.1 angularapp ts-узел 5.0.1 5.0.1 7.0.1 angularapp tslint 5.9.1 5.9.1 5.11.0 ангуларапп машинописный текст 2.7.2 2.7.2 3.1.3 angularapp
То же самое может быть достигнуто с помощью команды npm
В этом списке перечислены текущая версия и версии прямой зависимости
B: \ myblogs \ cloudhadoop> npm list webpack [email protected] B: \ myblogs \ cloudhadoop + - [email protected] | `- дедуплицированный [email protected] + - сжатие[email protected] | `- дедуплицированный [email protected] + - [email protected] | `- terser-webpack-plugin @ 1.4.5 | `- дедуплицированный [email protected] `- [email protected] `- дедуплицированный [email protected]
Как проверить зависимости и обновить до последних версий?
с
ncu
, вы можете перечислить все пакеты с текущими версиями и последними версиямиpackage.json
.B: \ Workspace \ blog \ angularapp> ncu Использование B: \ Workspace \ blog \ angularapp \ package.json [..................] \: @ angular-devkit / build-angular ~ 0.7.0 → ~ 0.1.3.1 транспортир ~ 5.3.0 → ~ 5.4.1 ts-узел ~ 5.0.1 → ~ 7.0.1 tslint ~ 5.9.1 → ~ 5.11.0 машинописный текст ~ 2.7.2 → ~ 3.1.3 Запустите ncu с -u, чтобы обновить package.json
Это только отображает версии на консоли и не обновляется до package.json. Затем обновите каждую зависимость в package.json до последних версий.
Вот одна команда для обновления всех пакетов с текущей версии до последней версии.
B: \ Workspace \ blog \ angularapp> ncu -u Использование B: \ Workspace \ blog \ angularapp \ package.json [..................] \: @ angular-devkit / build-angular ~ 0.7.0 → ~ 0.8.5 @ angular / cli ~ 6.1.1 → ~ 6.2.5 @ типы / узел ~ 8.9.4 → ~ 10.12.0 codelyzer ~ 4.2.1 → ~ 4.5.0 ядро жасмина ~ 2. 6.1.3.1 ", "транспортир": "~ 5.4.1", "ts-node": "~ 7.0.1", "tslint": "~ 5.11.0", "машинописный текст": "~ 3.1.3" } }
Как обновить каждый пакет до последней версии с помощью команды npm? Команда
npm предоставляет единый пакет для последнего обновления
npm --save @ angular / cli
Ниже выполняется запуск и обновление всех пакетов в package.json
Как обновить зависимости до последних версий в bower.json
Как пакет.json package update, мы можем использовать команду ncu с опцией
-m
Разница между npm update и npm-check-updates командой?
npm-check-update проверьте старые версии и обновления до последних версий в package.json, затем вам нужно установить последние пакеты с помощью команды
npm install
.Команда npm update обновляет последние версии в пакетах + установочные пакеты
Держите зависимости npm в актуальном состоянии — Алексей Худоченков
Многие разработчики были в ситуации, когда их проект завис из-за устаревших зависимостей.Уязвимости безопасности обнаружены в старой зависимости. Версия Node.js уходит из жизни, и ваш проект просто не может скомпилироваться на более новой версии. Множество предупреждений об устаревании в терминале и консоли браузера.
Часто забытые зависимости приводят к болезненным обновлениям, большему количеству ошибок, срыву сроков и просто очень напряженному времени.
Чтобы кодовая база работала, необходимо обновлять зависимости!
Некоторые профи в том, чтобы всегда обновлять зависимости.
- Получите новейшие функции и лучший опыт разработчика.
- Меньше ошибок и уязвимостей.
- В будущем будет меньше проблем с обновлениями.
- Иногда связки быстрее и меньше.
Есть некоторые минусы:
- Риск получения новых ошибок.
- Риск получить больший комплект.
Но плюсы перевешивают минусы.
npm устаревшее
/обновление npm
постоянная ссылкаВстроенное
npm устаревшее
иобновление npm
обеспечивают очень простой опыт.npm устаревший
показывает зависимости, у которых есть более новая версия. И он показывает самую высокую версию зависимости, которая находится в диапазоне semver, указанном вpackage.json
.npm update
обновляет все зависимости до самой высокой версии, соответствующей указанному диапазону semver (столбец «Требуется» вnpm устаревший
).Невозможно выбрать только несколько зависимостей, поэтому он устанавливает все. Иногда в минорной версии есть ошибки, и мы пока не хотим их обновлять.С
npm update
единственный вариант — закрепить версию вpackage.json
, а затем открепить ее, когда зависимость будет исправлена.После
npm update
npm outdated
показывает оставшиеся версии вне указанного диапазона semver. Обычно только основные версии.npm update
одновременно обновляетpackage.json
и устанавливает новые версии (не нужно запускатьnpm install
).npm-check-updates
постоянная ссылкаnpm-check-updates
обеспечивает гораздо лучший опыт, чем встроенные инструменты.Он показывает различия версий более четко, чемnpm, устаревший
.В отличие от
npm update
, он обновляет все до последней версии, игнорируя диапазон semver, указанный вpackage.json
.npm-check-updates
имеет интерактивный режим, в котором он спрашивает, следует ли обновлять каждую зависимость:Невозможно завершить прогресс сохранением прогресса в середине вопросов о зависимостях. Вам придется отвечать на все вопросы, даже если вы хотите обновить только первые несколько.
npm-check-updates
обновляет толькоpackage.json
, после него нужно запуститьnpm install
.npm-upgrade
постоянная ссылкаnpm-upgrade
даже лучше, чемnpm-check-updates
. Он показывает тот же список различий версий, что иnpm-check-updates
(это потому, чтоnpm-upgrade
построен поверх него :)). И это обеспечивает более функциональный интерактивный режим. Интерактивный режим — это основная функциональностьnpm-upgrade
.В отличие от
npm-check-updates
, вы могли закончить отвечать на вопросы в середине списка и при этом сохранить прогресс (опция «Завершить процесс обновления»).npm-upgrade
предоставляет быстрый способ просмотреть журнал изменений для каждой зависимости. Он пытается найти журнал изменений в репозитории или на странице «Выпуск» на Github. Иногда это не удается, но, по крайней мере, он откроет репозиторий, и вы можете сами найти журнал изменений.npm-upgrade
обновляет только пакет.json
, вам нужно запуститьnpm install
после него.npm-check
постоянная ссылкаnpm-check
имеет удобный интерактивный режим. Он группирует версии (основные, второстепенные, патч, не-semver), и, в отличие от предыдущих инструментов, вы можете перемещаться по списку с помощью клавиш со стрелками и выбирать зависимости с помощью клавиши пробела .npm update
и обновляетpackage.json
, и устанавливает новые версии (не нужно запускатьnpm install
).Как я обновляю зависимости постоянная ссылка
В большинстве случаев я использую только
npm-upgrade
, потому что он позволяет выборочно обновлять зависимости и упрощает доступ к журналам изменений. Иногда используюnpm-check
.Я предпочитаю обновлять зависимости каждые две недели в понедельник. Обновление в понедельник дает достаточно времени, чтобы уловить что-то странное или регресс и провести спокойные выходные 🙂 В 99% случаев после обновления не возникает никаких проблем.
Обычно я обновляю зависимости в несколько раундов:
- Все версии патчей и минорные версии
devDependencies
.Вряд ли что-то сломается. - Затем я обновляю младшие версии обычных
зависимостей
. Пытаюсь сгруппировать обновления. E. g. обновите Babel и все плагины Babel за один раунд. Или ESLint и все его плагины и т. Д. - Наконец основные версии. Обычно по одной основной версии за раз, если только основные версии не содержат критических изменений, которые не должны вызывать никаких проблем для моего проекта (например, поддержка прекращения зависимости для какой-то старой версии Node.js).
Почти после каждого раунда я запускаю тесты и проверяю в браузере (для клиентских проектов) области, на которые может повлиять только что обновленные зависимости.
Я фиксирую изменения после каждого раунда. Если новые зависимости вызывают проблемы, тогда будет легче найти причину, и нет необходимости повторять предыдущие раунды.
После завершения обновлений я снова запускаю тесты и проверяю все затронутые области в браузере, если применимо. Очистите историю Git, объединив все коммиты в один.
Массовое обновление устаревших пакетов npm
Вы когда-нибудь возвращались к проекту, к которому давно не прикасались, только для того, чтобы узнать, что есть много устаревших пакетов npm, которые вы хотите обновить? Это ситуация, в которой я иногда оказываюсь, и я никогда не думал, как с ней справиться.
Поиск устаревших пакетов
Во-первых, как узнать, что устарело? Для этого мы можем использовать
npm, устаревший
, и он вернет что-то вроде этого:Если вам нужна дополнительная информация, вы можете указать флаг
--long
и получить дополнительные данные, например, находится ли пакет в зависимостиdevDependencies
list:Если обновление находится в пределах фильтра semver, который есть в вашем пакете
.json
, легко обновить с помощьюnpm upgrade
, но если вы находитесь в ситуации, подобной той, что я оказался в приведенном выше списке, необходимо выполнить множество обновлений основных версий, и поскольку они выходят за рамки разрешенных семверь диапазон это не стартер.Обновление за пределами диапазона SemVer
Как мы можем выполнить обновление за пределами допустимого диапазона SemVer? Рассматривая его как новую установку и указывая тег
@latest
(или конкретную версию), например:1
npm install typescript @ latest
Будет установлена последняя версия TypeScript (
4.1.2
на момент написания), который является «обновлением» основной версии, и это достаточно легко сделать, если у вас есть только один или два пакета для обновления, но я просматривал 19 пакетов в моем репозитории для обновления, поэтому было бы много копировать / вставлять.Обновление выходных данных
В отношении устаревшей команды npm стоит отметить то, что если вы передадите
--json
, она вернет вам выходные данные в формате JSON, а не в формате, удобочитаемом человеком, и это заставило меня задуматься.Если у нас есть JSON, мы можем использовать
jq
для управления им и создания команды для запуска из командной строки.Выходной JSON из
npm outdated --json --long
будет выглядеть так:1 2 3 4 5 6 7 8 9 10
{ "@ types / istanbul-lib-report": { "current": "1.1.1", "разыскивается": "1.1.1", "последний": "3.0.0", "location": "node_modules / @ types / istanbul-lib-report", "тип": "devDependencies", "домашняя страница": "https://github.com/DefinitiTyped/DefinitiTyped#readme" } }
Мы начинаем с объекта, но мы хотим рассматривать каждый подобъект как отдельный узел в наборе данных, мы превратим его в массив, используя
to_entities
, что дает нам новый выход:1 2 3 4 5 6 7 8 9 10 11 12 13
[ { "ключ": "@ types / istanbul-lib-report", "ценить": { "текущий": "1.1,1 ", "разыскивается": "1.1.1", "последний": "3.0.0", "location": "node_modules / @ types / istanbul-lib-report", "тип": "devDependencies", "домашняя страница": "https://github.com/DefinitiTyped/DefinitiTyped#readme" } } ]
Это дает нам словарь, где ключ
devDependencies
.Мы делаем это с помощью функцииselect
в jq:1
npm устарело --json --long | jq 'to_entries | . [] | выберите (.value.type == "devDependencies") '
Функция
select
позволяет вам выполнять любую фильтрацию, которую вы хотите, например, если вы хотите обновить только определения типов TypeScript, вы можете изменитьselect
наselect (.ключ | startwith ("@ types"))
.Выполнение этого даст вам отфильтрованный вывод на терминале, показывая только пакеты, которые соответствуют вашему условию
select
. Последний шаг — создать новую версию установки пакета:1
npm устарело --json --long | jq 'to_entries | . [] | select (.value.type == "devDependencies") | .key + "@latest" '
В этом обновлении указан тег
@latest
, но вы можете использовать.key + "@" + .value.latest
, если вы хотите установить конкретную версию для более жесткого закрепления семвера. Теперь вывод в терминале будет выглядеть так:1
"@ types / istanbul-lib-report @ latest"
Все, что осталось сделать, это передать пакеты в
npm install
, чтобы вы могли подумать, что мы можем просто передать вывод по конвейеру:1
npm устарело --json --long | jq 'to_entries | .[] | select (.value.type == "devDependencies") | .key + "@latest" '| npm install
К сожалению,
npm install
не принимает аргументы командной строки, предоставляемые стандартным вводом, поэтому вместо этого мы будем использоватьxargs
для преобразования стандартного ввода в аргументы командной строки:1
npm устарело --json --long | jq 'to_entries | . [] | select (.value.type == "devDependencies") | .key + "@latest" '| xargs npm установить
Итак, обновление уже началось!
Заключение
Я собираюсь держать этот фрагмент под рукой, когда я вернусь к проектам, над которыми я давно не работал, поскольку это простой способ выполнить большое количество обновлений.
Альтернативный вариант, который вы можете посмотреть, — это
npm-check-updates
, это утилита командной строки, которая будет обновляться аналогично описанному выше, но также имеет другую функцию управления обновлениями. - Смена собственника: