J'ai un projet Node.js qui nécessite Node version 12 ou supérieure. Existe-t-il un moyen de le spécifier dans le fichier packages.json, afin que le programme d'installation vérifie automatiquement et informe les utilisateurs s'ils ont besoin de mettre à niveau?
261
Réponses:
Je pense que vous pouvez utiliser le champ "moteurs":
Comme vous dites que votre code ne fonctionnera certainement pas avec les versions inférieures, vous voulez probablement le drapeau "engineStrict" aussi:
La documentation du fichier package.json est disponible sur le site npmjs
Mettre à jour
engineStrict
est maintenant obsolète, donc cela ne donnera qu'un avertissement. Il appartient désormais à l'utilisateur de s'exécuternpm config set engine-strict true
s'il le souhaite.Update 2
Comme ben l'a souligné ci-dessous, la création d'un
.npmrc
fichier à la racine de votre projet (au même niveau que votre fichier package.json) avec le texteengine-strict=true
forcera une erreur lors de l'installation si la version Node n'est pas compatible.la source
engineStrict
est obsolète depuis plusieurs mois, produisant des avertissements lors de son utilisation. À partir de npm @ 3, la valeur de champ est ignoré et les violations de moteur ne produiront que des avertissements. Si vous, en tant qu'utilisateur, souhaitez une application stricte des moteurs, exécutez simplement npm config set engine-strict true "cd .. && npm i <folder-name>
de vérifier le projet lui-même. Cependant, cela déclenchera une construction entière en elle-même.engine-strict=true
à votre .npmrc a maintenant le même effetAjouter
à
package.json
vers le fichier
.npmrc
(prochepackage.json
, même répertoire)la source
npm install
; fonctionneyarn
aussi avecpackage.json
avec une section "moteurs" similaire à celle ci-dessus (11.13.0
et6.7.0
), et une.npmrc
avec rien d'autre que le contenu spécifié ci-dessus. J'ai eu nvm me faire basculer sur une version de nœud plus ancienne, puis j'ai courunpm install
, mais il installe simplement les dépendances et ne mentionne même pas le décalage de version du moteur.Tout comme dit Ibam, il
engineStrict
est désormais obsolète. Mais j'ai trouvé cette solution:check-version.js:
package.json:
En savoir plus ici: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
Et encore une chose. Un fichier dot '.nvmrc' peut être utilisé pour exiger une version de nœud spécifique - https://github.com/creationix/nvm#nvmrc
Mais, il n'est respecté que par les scripts npm (et les scripts de fil).
la source
.nvmrc
Si vous utilisez NVM comme celui-ci , ce que vous devriez probablement faire, vous pouvez indiquer la version nodejs requise pour le projet donné dans un
.nvmrc
fichier git-tracké :Cela ne prend pas effet automatiquement sur
cd
, ce qui est sensé: l'utilisateur doit alors faire:et maintenant cette version du nœud sera utilisée pour le shell actuel.
Vous pouvez répertorier les versions de nœud que vous avez avec:
.nvmrc
est documenté à: https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrcLa façon de sélectionner automatiquement la version de ce nœud sur a
cd
été posée à: Passer automatiquement à la version correcte du nœud en fonction du projetTesté avec NVM 0.33.11.
la source
Il existe un autre moyen plus simple de procéder:
npm install Node@8
(enregistre le nœud 8 en tant que dépendance dans package.json)Cela fonctionne parce que
node
s'agit simplement d'un package qui expédie le nœud en tant que package binaire. Il inclut juste comme node_module / .bin ce qui signifie qu'il ne rend le nœud disponible que pour les packages de scripts. Pas la coque principale.Voir la discussion sur Twitter ici: https://twitter.com/housecor/status/962347301456015360
la source
./node node-sass
plutôt que justenode-sass
. Je ne sais pas si c'est la même chose pour tous les fichiers .bin.Un exemple de cas de test Mocha:
la source