如何基于concurrently包自动为目录文件启动独立进程?
用concurrently自动遍历目录启动多进程
直接给你两种可行的实现方案,解决重复脚本和手动添加的问题:
方案一:借助Shell命令(分平台)
Windows(Cmd环境)
修改package.json的scripts:
{ "scripts": { "mass": "for %f in (accounts/*.json) do @echo \"ts-node src/index.ts --settings %f\" | concurrently -" } }
Linux/macOS(Bash/Zsh环境)
同样修改package.json:
{ "scripts": { "mass": "ls accounts/*.json | xargs -I {} echo \"ts-node src/index.ts --settings {}\" | concurrently -" } }
方案二:跨平台Node脚本(推荐)
这种方式不依赖系统Shell,全平台通用:
- 在项目根目录创建
start-mass.js:
const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); // 扫描accounts目录下的所有JSON文件 const accountsDir = path.join(__dirname, 'accounts'); const jsonFiles = fs.readdirSync(accountsDir) .filter(file => path.extname(file) === '.json') .map(file => `ts-node src/index.ts --settings accounts/${file}`); // 用concurrently执行所有命令 execSync(`concurrently "${jsonFiles.join('" "')}"`, { stdio: 'inherit' });
- 更新
package.json的脚本:
{ "scripts": { "mass": "node start-mass.js" } }
优势说明
- 新增JSON文件无需手动修改
package.json,脚本自动扫描 - 避免重复编写相同的启动命令,维护成本大幅降低
- 跨平台方案适配所有系统,无需区分环境
内容的提问来源于stack exchange,提问作者Adam Chubbuck
相关产品推荐
相关产品推荐

