You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在package.json中根据Node.js版本设置条件执行脚本?

基于Node.js版本条件执行package.json脚本

完全可以实现根据Node.js版本条件执行不同构建脚本,以下是具体实现方案:

1. 编写版本检测脚本

在项目根目录创建check-node-version.js文件,用于检测当前Node.js版本并执行对应命令:

const { execSync } = require('child_process');
const nodeVersion = process.version;
const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0], 10);

const targetCommand = process.argv[2];

if (majorVersion === 16) {
    if (targetCommand === 'dev') {
        execSync('webpack --progress --mode production --dev', { stdio: 'inherit' });
    } else if (targetCommand === 'prod') {
        execSync('lingui add-locale en && lingui extract --clean && lingui compile && webpack --mode production', { stdio: 'inherit' });
    }
} else if (majorVersion === 18) {
    if (targetCommand === 'dev') {
        execSync('SET NODE_OPTIONS=--openssl-legacy-provider && webpack --progress --mode production --dev', { stdio: 'inherit', shell: true });
    } else if (targetCommand === 'prod') {
        execSync('SET NODE_OPTIONS=--openssl-legacy-provider && lingui add-locale en && lingui extract --clean && lingui compile && webpack --mode production', { stdio: 'inherit', shell: true });
    }
} else {
    console.error(`不支持的Node.js版本:${nodeVersion},请使用16或18版本`);
    process.exit(1);
}

2. 修改package.json的scripts配置

将原有构建脚本替换为调用检测脚本的命令:

"scripts": {
    "build:dev": "node check-node-version.js dev",
    "build:prod": "node check-node-version.js prod"
}

补充说明

  • 脚本通过process.version获取当前Node版本,提取主版本号进行判断
  • stdio: 'inherit'用于将命令的输出同步到控制台,方便查看构建日志
  • 若需跨平台兼容(Linux/macOS),Windows的SET命令需替换为export,也可使用cross-env包统一处理环境变量,命令改为cross-env NODE_OPTIONS=--openssl-legacy-provider && ...

内容的提问来源于stack exchange,提问作者tRuEsAtM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:43:21