Eu tenho um projeto Node.js que requer o Node versão 12 ou superior. Existe uma maneira de especificar isso no arquivo packages.json, para que o instalador verifique e informe automaticamente os usuários se eles precisam atualizar?
261
Respostas:
Eu acho que você pode usar o campo "engines":
Como você está dizendo que seu código definitivamente não funcionará com versões inferiores, você provavelmente também desejará o sinalizador "engineStrict":
A documentação para o arquivo package.json pode ser encontrada no site npmjs
Atualizar
engineStrict
agora está obsoleto, portanto, isso só dará um aviso. Agora cabe ao usuário executar,npm config set engine-strict true
se ele quiser.Atualização 2
Como Ben apontou abaixo, a criação de um
.npmrc
arquivo na raiz do seu projeto (o mesmo nível do arquivo package.json) com o textoengine-strict=true
forçará um erro durante a instalação se a versão do Nó não for compatível.fonte
engineStrict
foi descontinuada por vários meses, produzindo avisos quando foi usada. Começando com npm @ 3, o valor do O campo é ignorado e as violações do mecanismo produzem apenas avisos. Se você, como usuário, deseja uma aplicação estrita do campo dos mecanismos, basta executar o npm config set engine-strict true "cd .. && npm i <folder-name>
se de verificar o projeto em si. No entanto, isso desencadeará uma compilação completa em si mesmo.engine-strict=true
ao seu .npmrc agora tem o mesmo efeitoAdicionar
para
package.json
para o arquivo
.npmrc
(próximo aopackage.json
mesmo diretório)fonte
npm install
; trabalha comyarn
bempackage.json
com uma seção "mecanismos" semelhante à acima (11.13.0
e6.7.0
), e uma.npmrc
com nada além do conteúdo especificado acima. Eu tinha o nvm me mudar para uma versão mais antiga do nó e, em seguida, executeinpm install
, mas ele apenas instala as dependências e nem menciona a incompatibilidade de versão do mecanismo.Assim como disse o Ibam,
engineStrict
agora está obsoleto. Mas eu encontrei esta solução:check-version.js:
package.json:
Saiba mais aqui: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
E mais uma coisa. Um arquivo de ponto '.nvmrc' pode ser usado para exigir a versão específica do nó - https://github.com/creationix/nvm#nvmrc
Mas, isso é respeitado apenas pelos scripts npm (e scripts de fios).
fonte
.nvmrc
Se você estiver usando o NVM como este , o que provavelmente deveria, poderá indicar a versão do nodejs necessária para um determinado projeto em um
.nvmrc
arquivo rastreado pelo git :Isso não entra em vigor automaticamente
cd
, o que é sensato: o usuário deve fazer um:e agora essa versão do nó será usada para o shell atual.
Você pode listar as versões do nó que possui:
.nvmrc
está documentado em: https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrcComo selecionar automaticamente a versão do nó
cd
foi solicitado em: Alternar automaticamente para a versão correta do nó com base no projetoTestado com NVM 0.33.11.
fonte
Há outra maneira mais simples de fazer isso:
npm install Node@8
(salva o nó 8 como dependência no package.json)Isso funciona porque
node
é apenas um pacote que envia o nó como seu binário de pacote. Ele inclui apenas como node_module / .bin, o que significa que apenas disponibiliza o nó para os scripts do pacote. Não é o shell principal.Veja a discussão no Twitter aqui: https://twitter.com/housecor/status/962347301456015360
fonte
./node node-sass
vez de apenasnode-sass
. Não tenho certeza se é o mesmo para todos os arquivos .bin.Um exemplo de caso de teste Mocha:
fonte