Precisamos integrar o Karma Test Runner ao TeamCity e, para isso, gostaria de fornecer um pequeno script ao sys-engineer (powershell ou qualquer outra coisa) que:
escolha o número da versão desejada em algum arquivo de configuração (acho que posso colocá-lo como um comentário direto no
karma.conf.js
)verifique se a versão definida do karma runner instalada no repositório global da npm
caso contrário, ou a versão instalada é mais antiga que o desejado: escolha e instale a versão correta
executá-lo:
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
Portanto, minha verdadeira pergunta é: "como é possível fazer o check-in de um script, se a versão desejada do pacote estiver instalada?". Você deve fazer a verificação ou é seguro ligar npm -g install
sempre?
Não quero sempre verificar e instalar a versão mais recente disponível, porque outros valores de configuração podem se tornar incompatíveis
fonte
npm update
especialmente comnpm update -g
... não faz o que a maioria dos pavões espera que faça! Veja: github.com/npm/npm/issues/6247 e gist.github.com/othiym23/4ac31155da23962afd0enpm -g update
é seguro usá-lo novamente. github.com/npm/npm/issues/6247#issuecomment-92182814As of [email protected], 'npm update' will change package.json to save the new version as the minimum required dependency
docs.npmjs.com/cli/update.htmlnpm outdated
identificará pacotes que devem ser atualizados enpm update <package name>
podem ser usados para atualizar cada pacote. Porém, antes de [email protected],npm update <package name>
as versões do seu package.json não serão atualizadas, o que é um problema.O melhor fluxo de trabalho é:
npm update
para instalar as versões mais recentes de cada pacoteConfira
npm-check-updates
para ajudar com esse fluxo de trabalho.npm-check-updates
para listar quais pacotes estão desatualizados (basicamente a mesma coisa que em execuçãonpm outdated
)npm-check-updates -u
para atualizar todas as versões do seu package.json (este é o molho mágico)npm update
como de costume para instalar as novas versões dos seus pacotes com base no package.json atualizadofonte
npm outdated
mostrará TODOS os pacotes .. mesmo dentro de outros pacotes .. mas esses não serão atualizados com este procedimento, para que sempre apareçam .. então usenpm-check-updates
(como você realmente recomendou) que mostra apenas os pacotes principais depackage.json
... isso é relevantenpm install --all-outdated
, mas não é ...npm update --save package_name
para salvar as alterações mais recentes no package.json.npm update
vsnpm-check-updates
?Há também um módulo "novo" chamado
npm-check
:Ele também fornece uma maneira interativa conveniente de atualizar as dependências.
fonte
Um passo fácil:
$ npm i -g npm-check-updates && ncu -u && npm i
Isso é tudo. Todas as versões do pacote
package.json
serão as principais versões mais recentes.Editar:
O que esta acontecendo aqui?
fonte
ncu
significa node-check-updates e-a
é a opção 'upgradeAll'. Encontrar todas as opções aqui: npmjs.com/package/npm-check-updatesnpx -p npm-check-updates ncu -u
Para atualizar um único pacote local:
Primeiro descubra seus pacotes desatualizados:
npm outdated
Atualize o pacote ou pacotes que você deseja manualmente como:
npm update --save package_name
Dessa forma, não é necessário atualizar seu
package.json
arquivo local .Observe que isso atualizará seu pacote para a versão mais recente.
Se você escreve alguma versão no seu
package.json
arquivo e faz:npm update package_name
Nesse caso, você obterá apenas a próxima versão estável (desejada) referente à versão que você escreveu em seu
package.json
arquivo.E
npm list (package_name)
você pode descobrir a versão atual dos seus pacotes locais.fonte
Comandos do NPM para atualizar ou corrigir vulnerabilidades em alguns arquivos de manifesto de dependência
Use o comando abaixo para verificar vulnerabilidades desatualizadas ou nos módulos de nós.
Se alguma vulnerabilidade for encontrada, use o comando abaixo para corrigir todos os problemas.
Se não funcionar para você, tente
Se você não quiser usar a correção forçada de auditoria, poderá corrigir manualmente as versões de suas dependências alterando-as nos arquivos package-lock.json e package.json . Então corra
npm update && npm upgrade
fonte
Verificar pacotes desatualizados
Verifique e escolha os pacotes para atualizar
npm oudated img
npx npm-check -u img
fonte
Sem pacotes adicionais, para apenas desatualizar e atualizar os que são, este comando fará:
npm install $(npm outdated | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@latest' | xargs echo)
fonte
Ao instalar pacotes npm (global ou localmente), você pode definir uma versão específica usando a
@version
sintaxe para definir uma versão a ser instalada.Em outras palavras, doing:
npm install -g [email protected]
garantirá que apenas 0.9.2 esteja instalado e não será reinstalado se já existir.Como uma palavra de conselho, sugiro evitar instalações globais do npm sempre que possível. Muitas pessoas não percebem que, se uma dependência define um arquivo bin, ele é instalado em ./node_modules/.bin/. Freqüentemente, é muito fácil usar a versão local de um módulo instalado definido em seu package.json. De fato, os scripts npm adicionam o ./node_modules/.bin ao seu caminho.
Como exemplo, aqui está um package.json que, quando eu executo
npm install && npm test
, instala a versão do karma definida em meu package.json e usa essa versão do karma (instalada em node_modules / .bin / karma) ao executar otest
script:Isso oferece o benefício do package.json, que define a versão do karma a ser usada e não precisa manter essa configuração globalmente na sua caixa de IC.
fonte
test
script? Você pode me dar uma pista de como instalá-lo com um script.npm test
. Os documentos do npm são muito bons aqui: npmjs.org/doc/scripts.htmlA partir de [email protected]+, você pode simplesmente fazer:
Isso atualizará automaticamente o
package.json
arquivo. Não precisamos atualizar a versão mais recente manualmente e, em seguida, usarnpm update <package name>
Você ainda pode obter o comportamento antigo usando
( Referência )
fonte
Para realmente atualizar apenas um pacote, instale o NCU e execute-o apenas para esse pacote. Isso vai bater com o mais recente real.
fonte