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

如何在根目录用单命令触发多子目录不同Node版本的Node.js构建?

跨系统Divi插件多版本Node构建解决方案

针对你的需求,提供三个可行的跨平台构建方案,解决Windows/macOS兼容性问题,实现根目录单命令完成全流程构建:

方案1:Yarn工作区 + NVM版本管理

适合依赖不同Node版本的子项目,利用NVM自动切换版本,结合Yarn工作区统一管理依赖与构建流程

  1. 配置版本文件
    在子目录分别创建.nvmrc指定Node版本:

    • /src/divi4/.nvmrc写入14
    • /src/divi5/.nvmrc写入18
  2. 根目录package.json配置

    {
      "private": true,
      "workspaces": [
        "src/divi4",
        "src/divi5"
      ],
      "scripts": {
        "install:all": "yarn workspaces run install",
        "build:divi4": "cd src/divi4 && nvm exec yarn build",
        "build:divi5": "cd src/divi5 && nvm exec yarn build",
        "build:root": "你的根目录打包命令",
        "build": "concurrently \"yarn build:divi4\" \"yarn build:divi5\" && yarn build:root",
        "postinstall": "yarn install:all"
      },
      "devDependencies": {
        "concurrently": "^8.2.2"
      }
    }
    
  3. 执行流程

    • 安装依赖:yarn add -D concurrently
    • 根目录运行yarn install自动安装所有子项目依赖
    • 运行yarn build并行构建divi4/divi5,完成后执行根目录打包

注意:Windows需安装nvm-windows,macOS/Linux用官方NVM,确保nvm exec命令可用

方案2:ShellJS + Cross-Env跨平台脚本

无需依赖NVM,用ShellJS编写跨平台兼容的构建脚本,结合concurrently实现并行执行

  1. 创建构建脚本
    根目录新建scripts/build.js:

    const shell = require('shelljs');
    const concurrently = require('concurrently');
    
    // 安装子项目依赖
    shell.cd('src/divi4');
    shell.exec('yarn install');
    shell.cd('../../');
    shell.cd('src/divi5');
    shell.exec('yarn install');
    shell.cd('../../');
    
    // 并行构建子项目
    concurrently([
      { command: 'cd src/divi4 && yarn build', name: 'DIVI4' },
      { command: 'cd src/divi5 && yarn build', name: 'DIVI5' }
    ]).then(() => {
      // 执行根目录打包
      shell.exec('你的根目录打包命令');
    }).catch(err => {
      console.error('构建失败:', err);
      process.exit(1);
    });
    
  2. 根目录package.json配置

    {
      "scripts": {
        "install": "yarn install && cd src/divi4 && yarn install && cd ../divi5 && yarn install",
        "build": "node scripts/build.js"
      },
      "devDependencies": {
        "shelljs": "^0.8.5",
        "concurrently": "^8.2.2"
      }
    }
    
  3. 执行流程

    • 安装依赖:yarn add -D shelljs concurrently
    • 根目录运行yarn install完成全量依赖安装
    • 运行yarn build触发跨平台构建流程

方案3:npm-run-all轻量脚本管理

用npm-run-all简化脚本编排,实现并行+串行的构建顺序

  1. 根目录package.json配置

    {
      "scripts": {
        "install:divi4": "cd src/divi4 && yarn install",
        "install:divi5": "cd src/divi5 && yarn install",
        "install:all": "run-p install:divi4 install:divi5",
        "build:divi4": "cd src/divi4 && yarn build",
        "build:divi5": "cd src/divi5 && yarn build",
        "build:parallel": "run-p build:divi4 build:divi5",
        "build:root": "你的根目录打包命令",
        "build": "run-s build:parallel build:root",
        "postinstall": "yarn install:all"
      },
      "devDependencies": {
        "npm-run-all": "^4.1.5"
      }
    }
    
  2. 执行流程

    • 安装依赖:yarn add -D npm-run-all
    • 根目录运行yarn install自动安装所有子项目依赖
    • 运行yarn build先并行构建子项目,再串行执行根目录打包

关键注意事项

  • Windows路径问题:脚本中避免复杂相对路径,可在ShellJS中用process.cwd()拼接绝对路径
  • Node版本校验:可在子项目package.json中添加版本检查脚本,比如divi4的prebuild:
    "scripts": {
      "prebuild": "node -v | grep -q 'v14' || echo '请使用Node 14构建Divi4'",
      "build": "你的构建命令"
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:11:10