如何 specify/enforce 在 package.json 中使用特定的 node.js 版本?
How to specify/enforce a specific node.js version to use in package.json?
如果用户使用项目中定义的不同 node.js 版本,我正在寻找中断构建的方法。
最好在 g运行t 或 bower 或 npm 中进行一些检查以停止,如果某个 npm/node 版本未用于 运行 当前构建。
您可以在 package.json
中使用 "engineStrict" 属性
查看文档以获取更多信息:https://docs.npmjs.com/files/package.json
2019 年 6 月 23 日更新
"engineStrict"
属性 在 npm 3.0.0 中被移除。
如果你想强制执行特定版本的 npm,你可以使用:
https://github.com/hansl/npm-enforce-version
如果你想在执行时强制执行一个节点版本,你可以通过检查来读取当前 运行 的节点版本:
process.versions
更多信息:https://nodejs.org/api/process.html#process_process_versions
您可以在 package.json
文件中使用 engines
属性
例如,如果您想确保您拥有的最低 node.js 版本为 6.9,最高为 6.10,那么您可以指定以下内容
package.json
{
"name": "Foo",
....
"engines": {
"node": ">=6.9 <=6.10"
}
}
"engineStrict" 已被删除,"engines" 仅适用于依赖项。如果你想检查 Node 的运行时版本,这对你有用:
您在服务器端代码中调用此函数。它使用正则表达式检查 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}`
);
}
};
用法:
checkNodeVersion(8)
即使 engineStrict
是 deprecated,您仍然可以完成此行为,而无需使用额外的脚本在您的项目中强制执行 Node 版本。
将 engines
属性 添加到您的 package.json
文件中。例如:
{
"name": "example",
"version": "1.0.0",
"engines": {
"node": ">=14.0.0"
}
}
在您的项目中创建一个 .npmrc
文件,与您的 package.json
.
处于同一级别
在新建的.npmrc
文件中,添加engine-strict=true
.
engine-strict=true
这将在用户运行 npm install
时强制执行您定义的 engines
。我创建了一个简单的示例 on GitHub 供您参考。
如果用户使用项目中定义的不同 node.js 版本,我正在寻找中断构建的方法。
最好在 g运行t 或 bower 或 npm 中进行一些检查以停止,如果某个 npm/node 版本未用于 运行 当前构建。
您可以在 package.json
中使用 "engineStrict" 属性查看文档以获取更多信息:https://docs.npmjs.com/files/package.json
2019 年 6 月 23 日更新
"engineStrict"
属性 在 npm 3.0.0 中被移除。
如果你想强制执行特定版本的 npm,你可以使用: https://github.com/hansl/npm-enforce-version
如果你想在执行时强制执行一个节点版本,你可以通过检查来读取当前 运行 的节点版本:
process.versions
更多信息:https://nodejs.org/api/process.html#process_process_versions
您可以在 package.json
文件中使用 engines
属性
例如,如果您想确保您拥有的最低 node.js 版本为 6.9,最高为 6.10,那么您可以指定以下内容
package.json
{
"name": "Foo",
....
"engines": {
"node": ">=6.9 <=6.10"
}
}
"engineStrict" 已被删除,"engines" 仅适用于依赖项。如果你想检查 Node 的运行时版本,这对你有用:
您在服务器端代码中调用此函数。它使用正则表达式检查 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}`
);
}
};
用法:
checkNodeVersion(8)
即使 engineStrict
是 deprecated,您仍然可以完成此行为,而无需使用额外的脚本在您的项目中强制执行 Node 版本。
将
engines
属性 添加到您的package.json
文件中。例如:{ "name": "example", "version": "1.0.0", "engines": { "node": ">=14.0.0" } }
在您的项目中创建一个
处于同一级别.npmrc
文件,与您的package.json
.在新建的
.npmrc
文件中,添加engine-strict=true
.engine-strict=true
这将在用户运行 npm install
时强制执行您定义的 engines
。我创建了一个简单的示例 on GitHub 供您参考。