J'ai un projet Node.js nécessitant Node version 12 ou supérieure. Existe-t-il un moyen de spécifier cela dans le fichier packages.json, de sorte que le programme d'installation vérifie automatiquement et informe les utilisateurs s'ils doivent mettre à niveau?
Je pense que vous pouvez utiliser le champ "moteurs":
{ "engines" : { "node" : ">=0.12" } }
Comme vous dites que votre code ne fonctionnera certainement pas avec les versions inférieures, vous voudrez probablement aussi l'indicateur "engineStrict":
{ "engineStrict" : true }
La documentation du fichier package.json est disponible sur le site npmjs
Mettre à jour
engineStrict
est maintenant obsolète, cela ne donnera donc qu'un avertissement. Il appartient maintenant à l'utilisateur d'exécuter npm config set engine-strict true
s'il le souhaite.
Comme dit Ibam, engineStrict
est maintenant obsolète. Mais j'ai trouvé cette solution:
check-version.js:
import semver from 'semver';
import { engines } from './package';
const version = engines.node;
if (!semver.satisfies(process.version, version)) {
console.log(`Required node version ${version} not satisfied with current version ${process.version}.`);
process.exit(1);
}
package.json:
{
"name": "my package",
"engines": {
"node": ">=50.9" // intentionally so big version number
},
"scripts": {
"requirements-check": "babel-node check-version.js",
"postinstall": "npm run requirements-check"
}
}
Plus d'informations ici: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
Et encore une chose…. Un fichier .nvmrc peut être utilisé pour exiger une version de noeud spécifique (mais je ne l’ai pas encore essayé) - https://github.com/creationix/nvm#nvmrc
Il existe un autre moyen plus simple de procéder:
npm install Node@8
(enregistre le noeud 8 en tant que dépendance dans package.json)Cela fonctionne parce que node
est simplement un paquet qui envoie le noeud en tant que paquet binaire. Il inclut uniquement le paramètre node_module/.bin, ce qui signifie qu'il ne rend les nœuds disponibles que pour les scripts de package. Pas Shell principal.
Voir la discussion sur Twitter ici: https://Twitter.com/housecor/status/962347301456015360
Un exemple de scénario de test Mocha:
describe('Check version of node', function () {
it('Should test version assert', async function () {
var version = process.version;
var check = parseFloat(version.substr(1,version.length)) > 12.0;
console.log("version: "+version);
console.log("check: " +check);
assert.equal(check, true);
});});
.nvmrc
Si vous êtes en utilisant NVM comme ceci , ce que vous devriez probablement, vous pouvez alors indiquer la version de nodejs requise pour un projet donné dans un fichier .nvmrc
git-suivi:
echo v10.15.1 > .nvmrc
Cela ne prend pas effet automatiquement sur cd
, ce qui est normal: l'utilisateur doit alors faire:
nvm use
et maintenant cette version du noeud sera utilisée pour le shell actuel.
Vous pouvez lister les versions de noeud que vous avez avec:
nvm list
.nvmrc
est documenté à l'adresse suivante: https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrc }
Testé avec NVM 0.33.11.