npm verificar e actualizar o pacote, se necessário
precisamos de integrar o Karma test runner na TeamCity e, para isso, gostaria de dar aos engenheiros de sistemas um pequeno script (powershell ou o que quer que fosse) que:
Pegue o número de versão desejado de algum arquivo de configuração (eu acho que eu posso colocá-lo como um comentário direito no
karma.conf.js
)Verificar se a versão definida do 'karma runner' instalada no 'repo global' do npm
Se não for, ou a versão instalada é mais antiga do que o desejado: pegue e instale direito versão
corre.:
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
então a minha verdadeira pergunta é: "como se pode verificar num script, se a versão desejada do pacote está instalada?". Deve fazer a verificação,ou é seguro ligar sempre?
Eu não quero sempre verificar e instalar a última versão disponível, porque outros valores de configuração podem tornar-se incompatíveis
7 answers
Para verificar se algum módulo de um projecto é 'antigo', deve fazer:
npm outdated
'outdated' irá verificar todos os módulos definidos no Pacote.json e ver se há uma versão mais recente no registro NPM.
Aqui está um exemplo, mostrando que xml2js (que está em node_modules/ no diretório atual) é obsoleta, porque uma versão mais recente existe (0.2.7):
[email protected] node_modules/xml2js current=0.2.6
Se quiser verificar se existem módulos desactualizados e instalar uma versão mais recente, então poderá fazer:
npm update
(para todos os módulos) ou npm update xml2js
(apenas verificações/actualizações xml2js)
npm outdated
irá identificar os pacotes que devem ser atualizados, e npm update <package name>
pode ser usado para atualizar cada pacote. Mas npm update <package name>
não actualizará as versões do seu pacote.json, que é um problema.
O melhor fluxo de trabalho é:
- identificar os pacotes desactualizados
- actualize as versões do seu pacote.json
- executar
npm update
para instalar as últimas versões de cada pacote
Verifique npm-check-updates
para ajudar com este fluxo de trabalho.
- instalar MPN-check-updates
- executar
npm-check-updates
para listar quais pacotes estão desactualizados (basicamente a mesma coisa que executarnpm outdated
) - execute
npm-check-updates -u
para actualizar todas as versões do seu pacote.json (este é o molho mágico) - executar
npm update
como de costume para instalar as novas versões dos seus pacotes com base no Pacote actualizado.json
npm-check
:
MPN-check
Verifique se existem dependências desactualizadas, incorrectas e não utilizadas.
Também oferece uma forma interactiva conveniente de actualizar as dependências.
-
Para actualizar um único pacote local:
-
Primeiro descubra os seus pacotes ultrapassados:
npm outdated
-
Depois actualiza o pacote ou pacotes que queres manualmente como:
npm update --save package_name
-
Desta forma não é necessário actualizar o seu local package.json
arquivo.
Note que isto irá atualizar o seu pacote para a versão mais recente.
-
Se escrever uma versão em o seu ficheiro
package.json
e faça:npm update package_name
Neste caso, você terá apenas a próxima versão estável (desejada) a respeito da versão que você escreveu em seu arquivo
package.json
.
E com {[6] } pode descobrir a versão actual dos seus pacotes locais.
Um passo fácil:
$ npm i -g npm-check-updates && ncu -a && npm i
package.json
serão as mais recentes.
Editar:
O que se passa aqui?
Instalar um pacote que verifica as actualizações para si.
Use este pacote para atualizar todas as versões do pacote no seu
package.json
(- a é o diminutivo de --updateAll).Instale todas as novas versões dos pacotes.
Ao instalar pacotes npm (tanto globalmente como localmente), poderá definir uma versão específica usando a sintaxe @version
para definir uma versão a instalar.
npm install -g [email protected]
irá garantir que apenas 0.9.2 está instalado e não reinstalar se já existe.
Por uma palavra de conselho, sugiro evitar instalações globais do MPN onde puder. Muitas pessoas não percebem que se uma dependência define um arquivo bin, ele é instalado para ./node_ modules/.bandeja/. Muitas vezes, é muito fácil de usar essa versão local de um módulo instalado que é definido em seu pacote.json. Na verdade, os scripts do npm irão adicionar o ./node_ modules/.bin para o teu caminho.
Como exemplo, aqui está um pacote.json que, quando eu executar npm install && npm test
irá instalar a versão do karma definida no meu pacote.json, e usar essa versão do karma (instalado no node_ modules/.bin / karma) ao executar o programa test
:
{
"name": "myApp",
"main": "app.js",
"scripts": {
"test": "karma test/*",
},
"dependencies": {...},
"devDependencies": {
"karma": "0.9.2"
}
}
Isto dá-lhe o benefício do seu pacote.JSON define a versão de karma para usar e não ter que manter essa configuração globalmente em sua caixa de CI.
Verificar pacotes desactualizados
npm outdated
Verifique e escolha os pacotes para actualizar
npx npm-check -u