我有一个Node.js项目需要Node 12或更高版本。有没有办法在packages.json文件中指定它,以便安装程序会自动检查并告知用户是否需要升级?
答案 0 :(得分:164)
我认为你可以使用“引擎”字段:
{ "engines" : { "node" : ">=0.12" } }
正如您所说,您的代码绝对不适用于任何较低版本,您可能也需要“engineStrict”标志:
{ "engineStrict" : true }
可以找到package.json文件的文档on the npmjs site
<强>更新强>
engineStrict
现已弃用,因此这只会发出警告。现在,用户可以根据需要运行npm config set engine-strict true
。
答案 1 :(得分:60)
添加
到package.json
"engines": {
"node": ">=10.0.0",
"npm": ">=6.0.0"
},
到文件.npmrc
(靠近package.json
,同一目录)
engine-strict=true
答案 2 :(得分:36)
就像Ibam所说,remove()
现已弃用。但是我找到了这个解决方案:
检查-version.js:强>
engineStrict
<强>的package.json:强>
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);
}
在此处了解更多信息: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
<强> .nvmrc 强>
还有一件事。 一个dotfile&#39; .nvmrc&#39;可用于要求特定节点版本 - https://github.com/creationix/nvm#nvmrc
但是,它只受到npm脚本(和纱线脚本)的尊重。
答案 3 :(得分:1)
.nvmrc
如果您本来应该是using NVM like this,则可以在git跟踪的.nvmrc
文件中指示给定项目所需的nodejs版本:
echo v10.15.1 > .nvmrc
这在cd
上不会自动生效,这是明智的:用户必须执行以下操作:
nvm use
,现在该节点版本将用于当前shell。
您可以列出拥有的节点的版本:
nvm list
.nvmrc
记录在:https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrc
经过NVM 0.33.11测试。
答案 4 :(得分:0)
还有另一种更简单的方法:
npm install Node@8
(将节点8保存为package.json中的依赖项)这是有效的,因为node
只是一个将节点作为其包二进制发送的包。它只包含node_module / .bin,这意味着它只使节点可用于打包脚本。不是主壳。
请参阅Twitter上的讨论:https://twitter.com/housecor/status/962347301456015360
答案 5 :(得分:0)
一个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);
});});