如果用户正在使用项目中定义的不同node.js版本,我正在寻找一种打破构建的方法.
理想情况下,如果某个npm/node版本不用于运行当前版本,则将一些支票放入grunt或bower或npm中停止.
bli*_*mer 32
尽管engineStrict已弃用,您仍然可以完成此行为,而无需使用额外的脚本在项目中强制使用 Node 版本。
将属性添加engines到您的package.json文件中。例如:
{
"name": "example",
"version": "1.0.0",
"engines": {
"node": ">=14.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
在您的项目中创建一个.npmrc与package.json.
在新创建的.npmrc文件中,添加engine-strict=true.
engine-strict=true
Run Code Online (Sandbox Code Playgroud)
这将engines在用户运行时强制执行您定义的npm install。我在 GitHub 上创建了一个简单的示例供您参考。
“engineStrict”已被删除,“engines”仅适用于依赖项。如果您想检查 Node 的运行时版本,这对您有用:
您可以在服务器端代码中调用此函数。它使用正则表达式使用eremzeit 的响应来检查 Node 的运行时版本。如果未使用适当的版本,它将抛出错误:
const checkNodeVersion = version => {
const versionRegex = new RegExp(`^${version}\\..*`);
const versionCorrect = process.versions.node.match(versionRegex);
if (!versionCorrect) {
throw Error(
`Running on wrong Nodejs version. Please upgrade the node runtime to version ${version}`
);
}
};
Run Code Online (Sandbox Code Playgroud)
用法:
checkNodeVersion(8)
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以在 package.json 中使用“engineStrict”属性
查看文档以获取更多信息:https : //docs.npmjs.com/files/package.json
2019 年 6 月 23 日更新
"engineStrict" 在 npm 3.0.0 中删除了属性。
参考:https : //docs.npmjs.com/files/package.json#enginestrict
您可以使用文件中的engines属性package.json
比如你要保证node.js版本最低是6.9,最高是6.10,那么你可以指定如下
package.json
{
"name": "Foo",
....
"engines": {
"node": ">=6.9 <=6.10"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6567 次 |
| 最近记录: |