vue多项目批量执行启动、打包等命令
-
新建一个文件夹保存所有项目:item
-
文件夹中创建多个vue项目:[test1, test2, test3, test4]
-
在item文件夹根目录创建文件夹:npm-config
-
初始化项目:npm init
-
配置package.json
{ "name": "npm-config", "version": "0.1.0", "private": true, "scripts": { "init": "node config/install.js npm", "cinit": "node config/install.js cnpm", "yinit": "node config/install.js yarn", "serve": "node config/start.js", "dev": "node config/start.js", "build": "node config/build.js", "lint": "vue-cli-service lint" } } -
创建config文件夹
-
创建build.js:打包项目
const runUnit = require("./run-util"); console.log(process.argv); let apps = process.argv.slice(2); //需要运行的文件目录 console.log("开始打包..."); runUnit.run("npm run build", { apps, CK: "C" }); runUnit.processOn(); -
创建install.js:拉取依赖
const runUnit = require("./run-util"); console.log(process.argv); console.log("开始拉取依赖包..."); let apps = process.argv.slice(3); //需要运行的文件目录 runUnit.run(`${process.argv[2]} install`, { apps, CK: "C" }); runUnit.processOn(); -
创建run-util.js:读取文件夹并运行服务
const fs = require("fs"); const path = require("path"); const sub_app_ath = path.resolve(__dirname, "../../"); const defaultAllApps = [test1, test2, test3, test4]; //项目文件夹目录 const dirs = fs.readdirSync(sub_app_ath); //所有目录 const child_process = require("child_process"); const commandObj = { serve: "启动", dev: "启动", build: "打包", install: "下载依赖", }; function run(command, config = {}) { let { CK = "K", apps = [] } = config; let myApps = apps instanceof Array && apps.length ? apps : defaultAllApps; let runApps = dirs.filter((i) => myApps.includes(i)); for (let i in commandObj) { if (new RegExp(i).test(command)) { console.log(`${commandObj[i]}项目:${myApps.join(" ")}`); break; } } runApps.forEach(async (i) => { child_process.exec(`start cmd.exe /${CK} "cd ../${i} && ${command}"`); }); } function processOn() { process.on("unhandledRejection", (reason, p) => { console.log("Unhandled Rejection at: Promise", p, "reason:", reason); }); } module.exports = { run, processOn, }; -
创建start.js:运行服务
const runUnit = require("./run-util"); console.log(process.argv); let apps = process.argv.slice(2); //需要运行的文件目录 console.log(apps); runUnit.run("npm run dev", { apps }); runUnit.processOn();
-
-
打开终端
- npm run dev:为run-util.js中配置的所有项目执行启动命令
- npm run build:为run-util.js中配置的所有项目执行打包命令
- npm install:为run-util.js中配置的所有项目执行拉取依赖命令
-
vue多项目批量执行启动、打包等命令
http://localhost:8090//archives/vue-duo-xiang-mu-pi-liang-zhi-xing-qi-dong--da-bao-deng-ming-ling