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-проверка
Проверьте устаревшие, неправильные и неиспользуемые зависимости.
![enter image description here]()
Он также обеспечивает удобный интерактивный способ обновления зависимостей.
Ответ 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 для обновления или исправления уязвимостей в некоторых файлах манифеста зависимости
-
Используйте приведенную ниже команду для проверки устаревших или уязвимостей в ваших модулях узла.
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.