Windows系统下如何在npm脚本中使用环境变量
解决Windows下npm脚本接收终端传入环境变量的问题
直接解决方案(针对Windows CMD)
- 修改package.json中的脚本,将
$变量名替换为Windows CMD识别的%变量名%语法:
"scripts": { "check": "echo %SECRET%" }
- 执行终端命令:
set SECRET=hello&& npm run check
此时就能得到预期输出hello。
适配你的原始场景
把build:steps:env脚本里的$TOKEN替换为%TOKEN%:
"staging": "run-s build:steps:* && run-s langcheck", "build:steps:env": "npx dotenv-vault pull .env --dotenvMe=%TOKEN%"
然后执行命令:
set TOKEN=blabla&& npm run staging
原因说明
Windows的CMD命令提示符使用%变量名%的语法引用环境变量,而你之前用的$变量名是类Unix系统(Linux/macOS)中bash/zsh的语法。npm在Windows下默认用CMD执行脚本,因此必须遵循CMD的变量引用规则。
跨平台兼容方案(可选)
如果需要同时兼容Windows和类Unix系统,可以使用cross-env包:
- 安装依赖:
npm install cross-env --save-dev
- 修改脚本为跨平台写法:
"scripts": { "check": "cross-env echo $SECRET" }
- 执行命令(Windows和类Unix系统通用):
# Windows CMD set SECRET=hello&& npm run check # Linux/macOS bash SECRET=hello npm run check
内容的提问来源于stack exchange,提问作者Chique
相关产品推荐
相关产品推荐

