新闻详情

新闻详情

首页 / 资讯中心 / 详情

concurrently CLI 配置指南:用 `CONCURRENTLY_` 环境变量固化默认命令行参数

发布时间:2026/9/27 8:50:21来源:尧图网络
concurrently CLI 配置指南:用 `CONCURRENTLY_` 环境变量固化默认命令行参数
CLI开发工具【免费下载链接】concurrentlyRun commands concurrently. Like npm run watch-js npm run watch-less but better.项目地址https://gitcode.com/gh_mirrors/co/concurrently点击查看免费下载本篇技术指南聚焦 concurrently 的 CLI 配置机制如何通过以CONCURRENTLY_为前缀的环境变量把--kill-others、--handle-input等常用参数变成默认开启的持久化配置从而让每次执行concurrently命令时无需重复输入冗长参数。读完本文你将掌握环境变量与 CLI 参数的完整映射规则、所有可配置参数的类型与默认值、以及参数优先级与实战组合用法。为什么需要配置功能concurrently仓库根 README是一个跨平台的多命令并行执行工具CLI 形态下每次调用都需要显式传入参数例如concurrently --kill-others --handle-input nodemon echo hello问题在于如果某个项目总是需要--kill-others或--handle-input那么每次执行都要重复输入这些参数容易遗漏也难以统一团队的使用习惯。官方文档 docs/cli/configuration.md 给出的答案是把常用参数写入环境变量作为默认配置常驻生效。该机制的核心思路是当你想让 concurrently 总是带某些开关时不必修改命令本身任何 concurrently 的 CLI 参数都可以通过一个以CONCURRENTLY_为前缀的同名环境变量来设定环境变量与命令行参数是等价的最终都会被同一个参数解析器读取。机制解析CONCURRENTLY_前缀是如何生效的concurrently 的 CLI 入口是 bin/index.ts其参数解析基于 yargs。在构建解析器时源码中有一行关键配置// bin/index.ts const program yargs(hideBin(process.argv)) .parserConfiguration({ ... }) .help(h) // ... .env(CONCURRENTLY) // ← 环境变量注入点 .options({ /* 全部 CLI 参数定义 */ });.env(CONCURRENTLY)表示yargs 会扫描所有以CONCURRENTLY_开头的环境变量将其去除前缀、转为 camelCase后与.options({...})中定义的参数名如kill-others、handle-input、max-processes进行匹配并把匹配到的值当作该参数被显式指定。因此官方文档 docs/cli/configuration.md 中的示例$ export CONCURRENTLY_KILL_OTHERStrue $ export CONCURRENTLY_HANDLE_INPUTtrue # Equivalent to passing --kill-others and --handle-input $ concurrently nodemon echo hey nodemon, you wont last long其效果就等同于执行$ concurrently --kill-others --handle-input nodemon echo hey nodemon, you wont last long也就是说环境变量配置与命令行参数走的是同一条解析管线最终都会汇聚到 bin/index.ts 中concurrently(...)的选项对象里。例如CONCURRENTLY_KILL_OTHERStrue最终会被转换为killOthersOn: [success, failure]传入核心函数见 bin/index.ts 中args.killOthers ? [success, failure] : ...的分支逻辑。提示由于conc是 concurrently 的别名见 README.md环境变量配置对conc命令同样生效二者共享同一套解析逻辑。可配置参数全览环境变量名、类型与默认值既然任何 concurrently 的 flag 都可以用环境变量设置那么完整参数清单就是配置的参照系。concurrently 的全部 CLI 参数定义于 bin/index.ts 的.options({...})中默认值统一维护在 lib/defaults.ts。下表按功能分组整理环境变量CONCURRENTLY_ 下表名称等价 CLI 参数类型默认值说明MAX_PROCESSES--max-processes/-mstring数字或 50% 这类百分比0全部并行同时运行的进程数上限百分比按 CPU 核数折算见 lib/concurrently.ts 中的计算逻辑NAMES--names/-nstring逗号分隔空为各进程指定自定义名字用于前缀模板SUCCESS--success/-sstringall成功条件first/last/all/command-{name|index}等RAW--raw/-rbooleanfalse只输出原始输出关闭前缀美化与着色NO_COLOR--no-colorbooleanfalse关闭日志着色Chalk 自身也会读取该值HIDE--hidestring逗号分隔隐藏指定进程按名字或索引的输出GROUP--group/-gbooleanfalse让输出按顺序执行的方式分组呈现TIMINGS--timingsbooleanfalse显示各进程的运行耗时信息SHELL--shellstring平台默认Windows 为cmd.exe其余为/bin/sh且优先npm_config_script_shell指定执行命令所用的 shellPASSTHROUGH_ARGUMENTS--passthrough-arguments/-Pbooleanfalse把附加参数透传给命令配合占位符使用TEARDOWN--teardownstring可多次无退出前执行的清理命令不影响退出码KILL_OTHERS--kill-others/-kbooleanfalse任一进程退出后杀掉其余进程等价于killOthersOn: [success,failure]KILL_OTHERS_ON_FAIL--kill-others-on-failbooleanfalse仅当某进程以非零码退出时杀掉其余进程KILL_SIGNAL--kill-signal/-ksstring平台默认Linux/macOS 为SIGTERM杀进程时发送的信号如SIGTERM/SIGKILLKILL_TIMEOUT--kill-timeoutnumber无强制终止进程前的等待毫秒数PREFIX--prefix/-pstringindex设了--names则为 name前缀格式index/pid/time/command/name/none或模板PREFIX_COLORS--prefix-colors/-cstring逗号分隔auto前缀颜色支持 Chalk 颜色、#RRGGBB、auto等PREFIX_LENGTH--prefix-length/-lnumber10前缀展示的最大字符数配合command前缀使用PAD_PREFIX--pad-prefixbooleanfalse用空格补齐前缀使所有前缀等宽TIMESTAMP_FORMAT--timestamp-format/-tstringyyyy-MM-dd HH:mm:ss.SSS时间戳的 Unicode 日期格式RESTART_TRIES--restart-triesnumber0进程失败后的重启次数负数表示无限重启RESTART_AFTER--restart-afterstring毫秒数或exponential0重启前的等待时间毫秒或exponential指数退避HANDLE_INPUT--handle-input/-ibooleanfalse将 stdin 输入转发给子进程DEFAULT_INPUT_TARGET--default-input-targetstring / number0未指定前缀时stdin 输入默认发送给哪个进程索引或名字以上默认值均可在 lib/defaults.ts 中找到对应定义参数的类型与描述则以 bin/index.ts 为准。这份清单同时暗示了命名规律环境变量名 CLI 参数的 camelCase 形式并大写化例如restart-tries→RESTART_TRIES、prefix-colors→PREFIX_COLORS。值类型与书写格式由于环境变量本身都是字符串yargs 会根据参数定义中的type做解析布尔型参数如KILL_OTHERS、HANDLE_INPUT、RAW、GROUP、TIMINGS、PAD_PREFIX、PASSTHROUGH_ARGUMENTS显式写true/false。想默认关闭一个本来被脚本开启的开关也可以反向用CONCURRENTLY_XXXfalse覆盖数字型参数如RESTART_TRIES、KILL_TIMEOUT、PREFIX_LENGTH直接写数值如CONCURRENTLY_RESTART_TRIES2、CONCURRENTLY_KILL_TIMEOUT5000字符串型参数如PREFIX、SHELL、TIMESTAMP_FORMAT、SUCCESS直接写字符串值如CONCURRENTLY_PREFIXname逗号分隔列表如NAMES、HIDE、PREFIX_COLORS沿用 CLI 的逗号语法如CONCURRENTLY_NAMESmain,browser,server特殊取值MAX_PROCESSES支持50%这种百分比形式核心函数 lib/concurrently.ts 会按os.cpus().length折算实际并发数RESTART_AFTER支持exponential字符串bin/index.ts 中专门做了判断。优先级与生效范围参数来源一共有三层其优先级遵循 yargs 的解析规则命令行显式参数如--kill-others优先级最高CONCURRENTLY_环境变量其次内置默认值lib/defaults.ts最低。也就是说环境变量提供的是默认配置——当某条命令没有显式传参时环境变量决定取值一旦命令显式传入则覆盖环境变量。这一优先级设计保证了团队可以在.env、CI 配置或 shell profile 中统一默认开启某些行为单次执行仍可通过显式参数临时覆盖例如concurrently --handle-input覆盖CONCURRENTLY_HANDLE_INPUTfalse。环境变量的生效范围是进程级的export后对当前 shell 会话内所有concurrently/conc调用生效若在package.json的scripts中运行则会随 npm 脚本的执行环境一并传递。这与 docs/shell-resolution.md 中描述的 shell 解析规则属于同一类进程环境决定行为的设计。实战示例示例一让失败即停成为默认行为# ~/.bashrc 或项目 .env 中持久化 export CONCURRENTLY_KILL_OTHERStrue # 之后每次执行都自动带上 --kill-others concurrently npm run watch:js npm run watch:css当任一 watch 进程退出时其余进程会被一并终止避免坏进程还在后台空转。示例二默认开启 stdin 转发export CONCURRENTLY_HANDLE_INPUTtrue export CONCURRENTLY_DEFAULT_INPUT_TARGET0 concurrently nodemon echo hey nodemon, you wont last long这是官方文档 docs/cli/configuration.md 原始示例的扩展HANDLE_INPUT让终端输入转发给子进程DEFAULT_INPUT_TARGET指定默认接收方索引 0 即第一个进程。更完整的输入处理说明见 docs/cli/input-handling.md。示例三组合多个配置项export CONCURRENTLY_MAX_PROCESSES2 export CONCURRENTLY_PREFIXname export CONCURRENTLY_PREFIX_COLORSauto export CONCURRENTLY_RESTART_TRIES3 export CONCURRENTLY_RESTART_AFTER1000 concurrently tsc -w jest --watch eslint --watch这条命令等效于concurrently \ --max-processes 2 \ --prefix name \ --prefix-colors auto \ --restart-tries 3 \ --restart-after 1000 \ tsc -w jest --watch eslint --watch关于前缀样式PREFIX、PREFIX_COLORS、PREFIX_LENGTH、TIMESTAMP_FORMAT的完整语义可参考 docs/cli/prefixing.md重启行为RESTART_TRIES、RESTART_AFTER详见 docs/cli/restarting.md输出控制RAW、GROUP、HIDE、TIMINGS详见 docs/cli/output-control.md。示例四临时覆盖环境变量# 环境变量默认开启了 kill-others但这次想保留所有进程 concurrently --no-kill-others ... # 不存在这样的 flag正确做法是注意布尔开关类参数没有反义 flag覆盖方式是在命令显式传参或用false重新赋值环境变量例如CONCURRENTLY_KILL_OTHERSfalse concurrently ...。这也再次印证了环境变量提供默认值、显式参数与环境变量共同决定最终取值的模型。与编程式 API 的对应关系环境变量配置只作用于CLI 形态如果你在代码中直接调用 API则需把同样的选项写进concurrently(commands, options)的第二个参数。CLI 参数与 API 选项一一对应例如kill-others对应killOthersOn、handle-input对应handleInput、max-processes对应maxProcesses完整的选项定义见 lib/index.ts 中的ConcurrentlyOptions类型。也就是说默认配置这件事在编程场景下等价于把公共选项提取到一个共享的 options 对象里——CLI 的环境变量方案本质上是为命令行使用场景提供了同样的一次配置、处处生效能力。小结CONCURRENTLY_前缀环境变量是 concurrently 面向 CLI 的配置文件借助 bin/index.ts 中的.env(CONCURRENTLY)所有 CLI 参数都可以被环境变量预设为默认值并遵循显式参数 环境变量 内置默认值的优先级。把这套机制与 docs/cli/configuration.md 之外的其他 CLI 文档前缀、输出控制、成功条件、终止、重启、输入处理、透传参数、快捷键配合使用即可把团队的并发命令执行习惯沉淀为可持续、可复现的默认配置。赞分享CLI开发工具【免费下载链接】concurrentlyRun commands concurrently. Like npm run watch-js npm run watch-less but better.项目地址https://gitcode.com/gh_mirrors/co/concurrently点击查看免费下载相关推荐FerretDB 配置旗标完全指南命令行参数、环境变量与源码级默认值解析FerretDB 配置旗标完全指南命令行参数、环境变量与源码级默认值解析 FerretDB 提供了一套完整的配置旗标configuration flags后端数据库文档数据库Intero项目终结启示录为什么这个Haskell开发利器停止维护Intero项目终结启示录为什么这个Haskell开发利器停止维护 Intero曾是Haskell开发者的终极IDE工具提供实时代码补全、错误检查和定义跳Aider CLI 全量选项参考从命令行参数、环境变量到 YAML 配置的完整指南Aider CLI 全量选项参考从命令行参数、环境变量到 YAML 配置的完整指南 本文以 aider 官方文档 Options reference http人工智能大模型AI Agent代码智能体交互助手CLI开发工具上一篇端侧AI新突破通义千问Qwen3-4B双模型发布2507版本重新定义小模型性能边界下一篇Ventoy 启动盘修复4 条命令救活点不亮的 U 盘创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

做网站水印防黑指南:3步速查手册保安全 2026/9/27 9:43:59

做网站水印防黑指南:3步速查手册保安全

做网站水印防黑指南:3步速查手册保安全 网站被黑挂马不知道怎么办?别慌,这不是玄学,是配置漏洞。很多站长朋友发现页面多出乱七八糟的广告代码,或者域名被指向非法内容,第一反应往往是“找黑客”,其实90%的情况是因为基础防护没做好。这时候,一份…

阅读更多 →
sensor调试 2026/9/27 9:43:39

sensor调试

步骤:首先查看sensor手册,确定传输是哪种接口,并根据厂商的初始化序列初始化sensor,名词介绍WDR(Wide Dynamic Range 宽动态范围)。指摄像头同时捕捉场景中极亮和极暗区域细节的能力。初始化序列按照一定的时间和顺序配置寄存器

阅读更多 →
齐齐哈尔做网站的公司怎么选?保姆级建站教程拆解避坑指南 2026/9/27 9:43:39

齐齐哈尔做网站的公司怎么选?保姆级建站教程拆解避坑指南

齐齐哈尔做网站的公司怎么选?保姆级建站教程拆解避坑指南 域名买错了服务器配不齐,后台乱码改不动,这种“域名服务器搞不懂”的噩梦,是不是把你折磨得头秃?很多老板在找 齐齐哈尔做网站的公司…

阅读更多 →
Homebrew一行命令安装Lap:macOS用户最快30秒上手照片管理器 2026/9/27 9:43:33

Homebrew一行命令安装Lap:macOS用户最快30秒上手照片管理器

Homebrew一行命令安装Lap:macOS用户最快30秒上手照片管理器 【免费下载链接】lap An offline-first photo manager for large local libraries 项目地址: https://gitcode.com/GitHub_Trending/lap3/lap Lap 是一款开源免费、本地优先的 macOS 照片管理器&am…

阅读更多 →
WordPress加入移动端导航哪家强?3个细节决定用户体验 2026/9/27 9:43:33

WordPress加入移动端导航哪家强?3个细节决定用户体验

WordPress加入移动端导航哪家强?3个细节决定用户体验 想自己搞个网站,但对着代码发呆?别慌,这事儿没那么玄乎。很多人卡在第一步:选了主题,觉得桌面端挺好看,结果手机一点,菜单缩成一团,点都点不开。这时候你会问,WordPress加入…

阅读更多 →
w7自己做网站多少钱?老手揭秘3个致命安全坑 2026/9/27 9:43:33

w7自己做网站多少钱?老手揭秘3个致命安全坑

w7自己做网站多少钱?老手揭秘3个致命安全坑 域名买好了,服务器也租下了,结果上线第一天就被黑? 很多人问 w7自己做网站多少钱,其实钱花得不多,但风险全在细节里。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉