如果节点版本不匹配,则阻止 npm 启动
Prevent npm start if node version mismatch
我有一个项目需要 Node >= V14,如果节点版本不匹配,我想阻止 npm 脚本的执行。
在package.json
中使用.npmrc
和engines
,如果节点版本不匹配,我可以防止npm install
从运行。
但是,如果没有找到合适的节点版本,有什么方法可以防止 npm start
执行?
取决于您的 start
做什么,但如果是您的代码:
if (process.versions.node.split('.')[0] < 14) process.exit(1)
简短回答: NPM 不提供实现此目的的内置功能。
解决方案:
但是您的要求可以通过使用自定义 node.js 帮助程序脚本来满足:
将以下 check-version.js
脚本保存在项目目录的根目录中,即将其保存在与 package.json 相同的级别居住地
检查-version.js
const MIN_VERSION = 14;
const nodeVersion = process.version.replace(/^v/, '');
const [ nodeMajorVersion ] = nodeVersion.split('.');
if (nodeMajorVersion < MIN_VERSION) {
console.warn(`node version ${nodeVersion} is incompatible with this module. ` +
`Expected version >=${MIN_VERSION}`);
process.exit(1);
}
在 package.json 的 scripts
部分定义 start
脚本如下:
package.json
...
"scripts": {
"start": "node check-version && echo \"Running npm start\""
},
....
注意 将 echo \"Running npm start\"
部分(以上)替换为您当前的 start
命令。
解释:
在check-version.js
中我们通过process.version
and remove the v
prefix using the replace()
方法获取Node.js版本字符串。
注意: 您可能更喜欢使用 process.versions.node
而不是 replace
来获取没有前缀 [=19] 的版本字符串=].
接下来我们仅从版本字符串中获取主要版本并将其分配给nodeMajorVersion
变量。
最后在 if
语句中,我们检查 nodeMajorVersion
是否低于预期的最小 node.js 版本 (MIN_VERSION
)。如果它低于预期版本,我们会警告用户并调用 process.exit()
方法,退出代码为 1
.
我有一个项目需要 Node >= V14,如果节点版本不匹配,我想阻止 npm 脚本的执行。
在package.json
中使用.npmrc
和engines
,如果节点版本不匹配,我可以防止npm install
从运行。
但是,如果没有找到合适的节点版本,有什么方法可以防止 npm start
执行?
取决于您的 start
做什么,但如果是您的代码:
if (process.versions.node.split('.')[0] < 14) process.exit(1)
简短回答: NPM 不提供实现此目的的内置功能。
解决方案:
但是您的要求可以通过使用自定义 node.js 帮助程序脚本来满足:
将以下
check-version.js
脚本保存在项目目录的根目录中,即将其保存在与 package.json 相同的级别居住地检查-version.js
const MIN_VERSION = 14; const nodeVersion = process.version.replace(/^v/, ''); const [ nodeMajorVersion ] = nodeVersion.split('.'); if (nodeMajorVersion < MIN_VERSION) { console.warn(`node version ${nodeVersion} is incompatible with this module. ` + `Expected version >=${MIN_VERSION}`); process.exit(1); }
在 package.json 的
scripts
部分定义start
脚本如下:package.json
... "scripts": { "start": "node check-version && echo \"Running npm start\"" }, ....
注意 将
echo \"Running npm start\"
部分(以上)替换为您当前的start
命令。
解释:
在
check-version.js
中我们通过process.version
and remove thev
prefix using thereplace()
方法获取Node.js版本字符串。注意: 您可能更喜欢使用
process.versions.node
而不是replace
来获取没有前缀 [=19] 的版本字符串=].接下来我们仅从版本字符串中获取主要版本并将其分配给
nodeMajorVersion
变量。最后在
if
语句中,我们检查nodeMajorVersion
是否低于预期的最小 node.js 版本 (MIN_VERSION
)。如果它低于预期版本,我们会警告用户并调用process.exit()
方法,退出代码为1
.