при необходимости проверьте и обновите пакет npm


нам нужно интегрировать Karma test runner в TeamCity, и для этого я хотел бы дать sys-engineers небольшой скрипт (powershell или что-то еще), который бы:

  1. возьмите нужный номер версии из какого-нибудь конфигурационного файла (я думаю, я могу поместить его в качестве комментария прямо в karma.conf.js)

  2. проверьте, установлена ли определенная версия Karma runner в глобальном РЕПО npm

  3. если это не так, или установленная версия старше желательно: подобрать и установить правильную версию

  4. запустить его: karma start .Scripts-Testskarma.conf.js --reporters teamcity --single-run

Итак, мой реальный вопрос: "как можно проверить скрипт, если установлена желаемая версия пакета?". Если вы делаете проверку, или это безопасно просто позвонить npm -g install каждый раз?

я не хочу всегда проверять и устанавливать последнюю доступную версию, потому что другие значения конфигурации могут стать несовместимыми

7 252

7 ответов:

чтобы проверить, является ли какой-либо модуль в проекте "старым", вы должны сделать:

npm outdated

'устаревший' будет проверять каждый модуль, определенный в пакете.json и посмотреть, есть ли более новая версия в реестре NPM.

вот пример, показывающий, что xml2js (то есть в node_modules/ в текущем каталоге) устарел, потому что существует более новая версия (0.2.7):

xml2js@0.2.7 node_modules/xml2js current=0.2.6

если вы хотите проверить на наличие устаревших модулей и установить новую версию, то вы можете делать: npm update (для всех модулей) или npm update xml2js (только проверяет / обновляет xml2js)

взгляните на документы NPM:

npm outdated определит пакеты, которые должны быть обновлены, и npm update <package name> можно использовать для обновления каждого пакета. Но npm update <package name> не будет обновлять версии пакета.json, который является проблемой.

Лучший рабочий процесс-это:

  1. определить устаревшие пакеты
  2. обновление версии в пакет.json
  3. выполнить npm update для установки последних версий каждого пакета

проверить npm-check-updates, чтобы помочь с данный рабочий процесс.

  • установить npm-check-updates
  • выполнить npm-check-updates чтобы перечислить, какие пакеты устарели (в основном то же самое, что и запуск npm outdated)
  • выполнить npm-check-updates -u чтобы обновить все версии в вашем пакете.json (это волшебный соус)
  • выполнить npm update как обычно, чтобы установить новые версии пакетов на основе обновленного пакета.json

есть также "свежий" модуль под названием npm-check:

npm-check

проверьте наличие устаревших, неправильных и неиспользуемых зависимостей.

enter image description here

Он также предоставляет удобный интерактивный способ обновления зависимостей.

  • для обновления одного локального пакета:

    1. сначала узнайте свои устаревшие пакеты:

      npm outdated

    2. затем обновите пакет или пакеты, которые вы хотите вручную, как:

      npm update --save package_name

таким образом, нет необходимости обновлять локальный package.json файл.

обратите внимание, что это позволит обновить пакет до последней версия.

  • если вы пишете какую-то версию в своем и у:

    npm update package_name

    в этом случае вы получите только следующую стабильную версию (требуется) относительно версии, которую вы написали в своем .

и npm list (package_name) вы можете узнать текущую версию ваших локальных пакетов.

один легкий шаг:

$ npm i -g npm-check-updates && ncu -a && npm i

вот и все. Все версии пакета в package.json будет последним.

Edit:

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

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

  2. используйте этот пакет для обновления всех версий пакета в вашем package.json (- a-сокращение от --updateAll).

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

при установке пакетов npm (как глобально, так и локально) вы можете определить конкретную версию с помощью @version синтаксис для определения версии будет установлен.

другими словами, делать: npm install -g karma@0.9.2 убедитесь, что установлен только 0.9.2 и не будет переустановлен, если он уже существует.

в качестве совета я бы предложил избегать глобальных установок npm везде, где вы можете. Многие люди не понимают, что если зависимость определяет файл bin, он устанавливается в ./папки node_modules/.закром./ Часто его очень легко использовать, что локальная версия установленного модуля, который определен в вашем пакете.формат JSON. На самом деле, сценарии npm добавят./папки node_modules/.Бин на вашем пути.

в качестве примера, вот пакет.json это, когда я бегу npm install && npm test установит версию кармы, определенную в моем пакете.json, и использовать эту версию karma (установлен в node_modules/.bin/karma) при запуске test сценарий:

{
 "name": "myApp",
 "main": "app.js",
 "scripts": {
   "test": "karma test/*",
 },
 "dependencies": {...},
 "devDependencies": {
   "karma": "0.9.2"
 }
}

это дает вам преимущество вашего пакета.json определяет версию karma для использования и не должен хранить эту конфигурацию глобально в вашем поле CI.

проверить устаревшие пакеты

npm outdated

проверьте и выберите пакеты для обновления

npx npm-check -u

npm oudated img

npx npm-check-u img