Нам нужно интегрировать тестер Karma в TeamCity, и для этого я бы хотел написать небольшой скрипт для sys-инженеров (powershell или любой другой), который бы:
выбрать нужный номер версии из какого-либо файла конфигурации (я думаю, я могу поместить его в качестве комментария прямо в
karma.conf.js
)проверить, установлена ли определенная версия кармы-бегуна в глобальном репозитории npm
если это не так, или установленная версия старше, чем нужно: выберите и установите нужную версию
запустить его:
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
Поэтому мой реальный вопрос: «Как проверить подлинность скрипта, если установлена нужная версия пакета?». Вы должны сделать проверку, или это безопасно просто звонить npm -g install
каждый раз?
Я не хочу всегда проверять и устанавливать последнюю доступную версию, потому что другие значения конфигурации могут стать несовместимыми
источник
npm update
особенно сnpm update -g
... это не то, чего ожидает большинство людей! См: github.com/npm/npm/issues/6247 и gist.github.com/othiym23/4ac31155da23962afd0enpm -g update
снова безопасно для использования. github.com/npm/npm/issues/6247#issuecomment-92182814As of npm@5.0.0, 'npm update' will change package.json to save the new version as the minimum required dependency
docs.npmjs.com/cli/update.htmlnpm outdated
определит пакеты, которые следует обновить, иnpm update <package name>
которые можно использовать для обновления каждого пакета. Но до npm@5.0.0npm update <package name>
не будет обновлять версии в вашем package.json, что является проблемой.Лучший рабочий процесс заключается в:
npm update
для установки последних версий каждого пакетаПроверьте,
npm-check-updates
чтобы помочь с этим рабочим процессом.npm-check-updates
чтобы увидеть, какие пакеты устарели (в основном то же самое, что и запускnpm outdated
)npm-check-updates -u
чтобы обновить все версии в вашем package.json (это волшебный соус)npm update
как обычно, чтобы установить новые версии ваших пакетов на основе обновленного package.jsonисточник
npm outdated
покажет ВСЕ пакеты ... даже внутри других пакетов ... но они не будут обновлены с помощью этой процедуры, поэтому они всегда будут появляться ... так что просто используйтеnpm-check-updates
(как вы на самом деле рекомендовали), который показывает только основные пакеты изpackage.json
... это актуальноnpm install --all-outdated
но это не так ...npm update --save package_name
чтобы сохранить последние изменения в package.json.npm update
противnpm-check-updates
?Существует также «свежий» модуль под названием
npm-check
:Он также предоставляет удобный интерактивный способ обновления зависимостей.
источник
Один простой шаг:
$ npm i -g npm-check-updates && ncu -u && npm i
Это все. Все версии пакета
package.json
будут последними основными версиями.Редактировать:
Что здесь происходит?
источник
ncu
расшифровывается как node-check-updates и-a
является опцией upgradeAll. Найдите все варианты здесь: npmjs.com/package/npm-check-updatesnpx -p npm-check-updates ncu -u
Чтобы обновить один локальный пакет:
Сначала узнайте ваши устаревшие пакеты:
npm outdated
Затем обновите пакет или пакеты, которые вы хотите вручную, как:
npm update --save package_name
Таким образом, нет необходимости обновлять локальный
package.json
файл.Обратите внимание, что это обновит ваш пакет до последней версии.
Если вы пишете какую-то версию в вашем
package.json
файле и делаете:npm update package_name
В этом случае вы получите только следующую стабильную версию (требуемую) относительно версии, которую вы написали в своем
package.json
файле.А с ним
npm list (package_name)
вы можете узнать текущую версию ваших локальных пакетов.источник
Команды NPM для обновления или исправления уязвимостей в некоторых файлах манифеста зависимости
Используйте приведенную ниже команду для проверки устаревших или уязвимостей в ваших модулях узла.
Если обнаружены какие-либо уязвимости, используйте приведенную ниже команду, чтобы исправить все проблемы.
Если это не работает для вас, попробуйте
Если вы не хотите использовать принудительное исправление аудита, вы можете вручную исправить версии зависимостей, изменив их в файлах package-lock.json и package.json . Тогда беги
npm update && npm upgrade
источник
Проверьте устаревшие пакеты
Проверьте и выберите пакеты для обновления
Npm устаревшие IMG
npx npm-check -u img
источник
Никаких дополнительных пакетов, чтобы просто проверить устаревшие и обновить те, которые есть, эта команда сделает:
npm install $(npm outdated | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@latest' | xargs echo)
источник
При установке пакетов npm (глобально или локально) вы можете определить конкретную версию, используя
@version
синтаксис для определения версии, которая будет установлена.Другими словами, выполнение:
npm install -g karma@0.9.2
гарантирует, что установлен только 0.9.2, и не будет переустанавливаться, если оно уже существует.В качестве совета я бы рекомендовал избегать глобальных установок npm везде, где вы можете. Многие люди не понимают, что если зависимость определяет файл bin, он устанавливается в ./node_modules/.bin/. Часто очень просто использовать ту локальную версию установленного модуля, которая определена в вашем package.json. Фактически, сценарии npm добавят ./node_modules/.bin на ваш путь.
В качестве примера, вот package.json, который при запуске
npm install && npm test
установит версию karma, определенную в моем package.json, и будет использовать эту версию karma (установленную в node_modules / .bin / karma) при запускеtest
сценария:Это дает вам преимущество вашего package.json, определяющего используемую версию кармы, и не требует сохранения этой конфигурации глобально на вашем CI box.
источник
test
сценарии? Подскажите, пожалуйста, как вы устанавливаете его с помощью скрипта.npm test
. Документы по npm здесь довольно хороши: npmjs.org/doc/scripts.htmlНачиная с npm@5.0.0+ вы можете просто сделать:
Это автоматически обновит
package.json
файл. Нам не нужно обновлять последнюю версию вручную, а затем использоватьnpm update <package name>
Вы все еще можете получить старое поведение, используя
( Ссылка )
источник
Чтобы действительно обновить только один пакет, установите NCU, а затем запустите его только для этого пакета. Это столкнется с реальным последним.
источник