Comment puis-je spécifier la version Node.js requirejse dans packages.json?

J’ai un projet Node.js qui nécessite Node version 12 ou supérieure. Est-il possible de spécifier cela dans le fichier packages.json, de sorte que le programme d’installation vérifie et informe automatiquement les utilisateurs s’ils doivent effectuer une mise à 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 le drapeau “engineSsortingct” aussi:

 { "engineSsortingct" : true } 

La documentation du fichier packages.json est disponible sur le site npmjs

Mettre à jour

engineSsortingct est maintenant obsolète, donc cela ne donnera qu’un avertissement. Il appartient maintenant à l’utilisateur d’exécuter npm config set engine-ssortingct true s’ils le souhaitent.

Tout comme l’a dit Ibam, engineSsortingct 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" } } 

Pour en savoir plus: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4

.nvmrc

Et une dernière chose … Un fichier de points ‘.nvmrc’ peut être utilisé pour exiger une version de noeud spécifique (mais je ne l’ai pas encore essayée) – https://github.com/creationix/nvm#nvmrc

Ajouter

à package.json

  "engines": { "node": ">=10.0.0", "npm": ">=6.0.0" }, 

au fichier .npmrc (proche de package.json , même répertoire)

 engine-ssortingct=true 

Il y a un autre moyen plus simple de le faire:

  1. npm install Node@8 (enregistre le nœud 8 comme dépendance dans package.json)
  2. Votre application fonctionnera avec Node 8 pour tout le monde – même pour les utilisateurs de Yarn!

Cela fonctionne parce que le node est juste un package qui envoie le nœud en tant que package binary. Cela inclut simplement node_module / .bin, ce qui signifie qu’il ne rend que le noeud disponible pour les scripts de paquets. Pas de shell principale.

Voir la discussion sur Twitter ici: https://twitter.com/housecor/status/962347301456015360