如何在packages.json中指定所需的Node.js版本?

我有一个需要Node版本12或更高版本的Node.js项目。 有没有办法在packages.json文件中指定它,这样安装程序会自动检查并通知用户是否需要升级?

我想你可以使用“引擎”字段:

{ "engines" : { "node" : ">=0.12" } } 

正如你所说的,你的代码绝对不能用于任何较低版本,你可能也需要“engineStrict”标志:

 { "engineStrict" : true } 

有关packages.json文件的文档可以在npmjs网站上find

更新

engineStrict现在已被弃用,所以这只会给出警告。 现在让用户运行npm config set engine-strict true如果他们想npm config set engine-strict true

就像Ibam说的那样, engineStrict现在已经被弃用了。 但是我发现这个解决scheme:

入住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" } } 

在这里了解更多: https : //medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4

.nvmrc

还有一件事…一个dotfile'.nvmrc'可以用于需要特定的节点版本(但我没有尝试它) – https://github.com/creationix/nvm#nvmrc