如何使用同一命令行在Unix和Windows上定义环境变量(set/export通用)
跨Windows/Unix系统设置环境变量的通用解决方案
针对npm工具链场景,最成熟的通用方案是使用cross-env工具,使用流程如下:
- 安装
cross-env为项目开发依赖
npm install cross-env --save-dev
- 替换原有分系统命令为统一写法
将原本分系统的两条命令直接替换为:
cross-env FOO=BAR npm run something
方案原理
cross-env会自动识别当前运行的操作系统:
- Windows环境下自动转换为
set语法适配cmd、PowerShell - Unix/Linux/macOS环境下自动转换为
export语法适配各类shell
无需手动调整命令,直接写入package.json的scripts字段即可在所有系统正常运行,支持npm、yarn、pnpm等所有主流前端包管理器。
无第三方依赖替代方案
如果不想引入额外的npm依赖,可借助Node.js本身的跨平台特性实现:
- 在项目根目录新建
run-with-env.js脚本,内容如下:
// 自定义需要设置的环境变量 process.env.FOO = 'BAR' // 执行后续命令 require('child_process').spawn('npm', ['run', 'something'], { stdio: 'inherit', shell: true })
- 所有系统统一执行
node run-with-env.js即可完成环境变量设置+命令执行的逻辑。
内容的提问来源于stack exchange,提问作者ou2s
相关产品推荐
相关产品推荐

