при необходимости проверьте и обновите пакет npm
нам нужно интегрировать Karma test runner в TeamCity, и для этого я хотел бы дать sys-engineers небольшой скрипт (powershell или что-то еще), который бы:
возьмите нужный номер версии из какого-нибудь конфигурационного файла (я думаю, я могу поместить его в качестве комментария прямо в
karma.conf.js
)проверьте, установлена ли определенная версия Karma runner в глобальном РЕПО npm
если это не так, или установленная версия старше желательно: подобрать и установить правильную версию
запустить его:
karma start .Scripts-Testskarma.conf.js --reporters teamcity --single-run
Итак, мой реальный вопрос: "как можно проверить скрипт, если установлена желаемая версия пакета?". Если вы делаете проверку, или это безопасно просто позвонить npm -g install
каждый раз?
я не хочу всегда проверять и устанавливать последнюю доступную версию, потому что другие значения конфигурации могут стать несовместимыми
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, который является проблемой.Лучший рабочий процесс-это:
- определить устаревшие пакеты
- обновление версии в пакет.json
- выполнить
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
проверьте наличие устаревших, неправильных и неиспользуемых зависимостей.
Он также предоставляет удобный интерактивный способ обновления зависимостей.
для обновления одного локального пакета:
сначала узнайте свои устаревшие пакеты:
npm outdated
затем обновите пакет или пакеты, которые вы хотите вручную, как:
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:
что здесь происходит?
установка пакета, который проверяет обновления для вас.
используйте этот пакет для обновления всех версий пакета в вашем
package.json
(- a-сокращение от --updateAll).установить все новые версии пакетов.
при установке пакетов 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.