我想在用户可以在我的模块上运行npm install
之前只允许某个版本的节点和npm。
在the NPM documentation中,有一个engine
属性,专门用于此任务:
"engines": {
"node": ">=4.0.0",
"npm": ">=3.0.0"
}
这些参数仅允许节点和npm版本最多4和3。
但是,文档说明应该启用engine-strict
属性以检查版本。在engine-strict
,it is said that:
此功能已弃用npm 3.0.0
那么,有没有一种方法,使用npm3,为模块定义最小的Node和NPM版本?
答案 0 :(得分:0)
那么,有没有一种方法,使用npm3,为模块定义最小的Node和NPM版本?
engines
就是这么做的。这只是它通过A)输出一条警告用户,如果他们的系统不是最新的,以及B)失败,如果用户设置了engine-strict
config flag
所有文档都说不再支持engineStrict
来推动用户。 :-)如果他们想忽略咨询消息而不使用engine-strict
配置标志,那么告诫用户。
答案 1 :(得分:0)
Yarn 在安装时开箱检查引擎。但是使用 npm,此时您可能需要编写一个自定义验证器,以便在触发脚本之前检查节点版本。
export function verifyNodeVersion(version) {
const nodeVersion = process.versions.node;
if (!nodeVersion.startsWith(`${version}.`)) {
throw new Error(
`Incorrect version of Node found: ${nodeVersion}, Expected: v${version}.x`
);
}
console.log('Current Node version:', nodeVersion);
return true;
}
并在入口点调用函数。