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, что является проблемой.

Лучший рабочий процесс заключается в следующем:

  1. Определить устаревшие пакеты
  2. Обновите версии в вашем package.json
  3. Запустите 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 будут самыми последними.

Редактировать:

Что здесь происходит?

  1. Установка пакета, который проверяет обновления для вас.

  2. Используйте этот пакет, чтобы обновить все версии пакета в вашем package.json (-a сокращенно — -u pdateAll).

  3. Установите все новые версии пакетов.

Ответ 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).

Точнее:

  1. Выполняет npm install и npm test , чтобы убедиться, что тесты проходят успешно.
  2. Запускает ncu -u для оптимального обновления всех зависимостей.
  3. Если тесты пройдут, ура!
  4. Если тесты не пройдены, восстанавливает файл пакета и файл блокировки.
  5. Для каждой зависимости установите обновление и запустите тесты.
  6. При обнаружении критического обновления сохраняет частично обновленный пакет.А теперь давайте определим виновника, не так ли?
    Восстановление 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% случаев после обновления не возникает никаких проблем.

    Обычно я обновляю зависимости в несколько раундов:

    1. Все версии патчей и минорные версии devDependencies .Вряд ли что-то сломается.
    2. Затем я обновляю младшие версии обычных зависимостей . Пытаюсь сгруппировать обновления. E. g. обновите Babel и все плагины Babel за один раунд. Или ESLint и все его плагины и т. Д.
    3. Наконец основные версии. Обычно по одной основной версии за раз, если только основные версии не содержат критических изменений, которые не должны вызывать никаких проблем для моего проекта (например, поддержка прекращения зависимости для какой-то старой версии 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 , это утилита командной строки, которая будет обновляться аналогично описанному выше, но также имеет другую функцию управления обновлениями.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *