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:
npm install Node@8
(enregistre le nœud 8 comme dépendance dans package.json) 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