cross-env
是一个 Node.js 工具,用来在 不同操作系统之间设置环境变量而不出错,尤其在 Windows 和 Unix 系统差异性明显的项目中非常有用。
一、为什么需要 cross-env
在 Node.js 项目中经常会在脚本中设置环境变量,例如:
"scripts": {
"start": "NODE_ENV=production node app.js"
}
这个在 Unix/macOS 中没有问题,但在 Windows 上会报错:
'NODE_ENV' 不是内部或外部命令,也不是可运行的程序
二、cross-env 的作用
使用 cross-env
,可以写出跨平台都能运行的脚本:
"scripts": {
"start": "cross-env NODE_ENV=production node app.js"
}
这样,NODE_ENV=production
就能同时在 Linux/macOS 和 Windows 上设置成功。
三、安装方法
npm install --save-dev cross-env
或
pnpm install --save-dev cross-env
或使用 yarn:
yarn add --dev cross-env
四、使用示例
1. 设置多个变量
"scripts": {
"build": "cross-env NODE_ENV=production API_URL=https://api.example.com webpack"
}
在代码中就可以读取这些变量:
console.log(process.env.NODE_ENV); // production
console.log(process.env.API_URL); // https://api.example.com
2. 使用 cross-env-shell(少见)
如果你想写更复杂的 shell 脚本,比如使用 &&
连写命令,可以用 cross-env-shell
:
"scripts": {
"test": "cross-env-shell NODE_ENV=test \"echo $NODE_ENV && node test.js\""
}
注意:$NODE_ENV
是 Unix 风格,如果要兼容 Windows 和 Unix,推荐使用 Node.js 脚本中用 process.env.变量名
获取。
五、常见使用场景
- 设置开发 / 生产环境变量(
NODE_ENV
) - 切换不同 API 地址(
API_URL
) - 动态传参给打包工具(webpack、vite)
- 启用调试模式(如
DEBUG=true
)
六、总结
特点 | 说明 |
---|---|
跨平台 | Windows/Linux/macOS 通用 |
简单 | 一行命令就能设置多个变量 |
常配合 npm script 使用 | 在 package.json 脚本中使用 |