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

如何编写Bash单行脚本提取Node.js项目环境变量生成.env.sample

生成更新.env.sample的Bash单行脚本

以下单行脚本可递归搜索项目目录,提取所有符合指定格式的已用环境变量,去重后生成最新的.env.sample文件:

grep -rEo 'process\.env(\.[A-Za-z0-9_-]+|\[(["'\''A-Za-z0-9_-]+)\])' . | sed -E 's/process\.env(\.|\[["'\''?])([A-Za-z0-9_-]+)["'\''?]?\]/\2/g' | sort -u > .env.sample

脚本各部分说明

  • grep -rEo 'process\.env(\.[A-Za-z0-9_-]+|\[(["'\''A-Za-z0-9_-]+)\])' .:递归遍历当前目录所有文件,匹配并输出所有符合格式的process.env变量引用片段
    • -r:递归搜索
    • -E:启用扩展正则表达式
    • -o:仅输出匹配的文本部分
  • sed -E 's/process\.env(\.|\[["'\''?])([A-Za-z0-9_-]+)["'\''?]?\]/\2/g':剥离process.env前缀及引号、括号,提取纯变量名
  • sort -u:对变量名排序并去重,避免重复条目
  • > .env.sample:将最终结果写入项目根目录的.env.sample文件

进阶优化(排除指定目录)

若需跳过node_modules、.git等无需扫描的目录,可给grep添加--exclude-dir参数:

grep -rEo --exclude-dir=node_modules --exclude-dir=.git 'process\.env(\.[A-Za-z0-9_-]+|\[(["'\''A-Za-z0-9_-]+)\])' . | sed -E 's/process\.env(\.|\[["'\''?])([A-Za-z0-9_-]+)["'\''?]?\]/\2/g' | sort -u > .env.sample

使用场景

  • 直接在项目根目录运行脚本,手动更新.env.sample
  • 将脚本加入预提交钩子(如husky),每次代码提交前自动同步最新环境变量
  • 集成到CI/CD流水线,确保构建时始终使用最新的.env.sample模板

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:36:20