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
,可以写出跨平台都能运行的脚本:
"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
"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
如果你想写更复杂的 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_URL
)DEBUG=true
)特点 | 说明 |
---|---|
跨平台 | Windows/Linux/macOS 通用 |
简单 | 一行命令就能设置多个变量 |
常配合 npm script 使用 | 在 package.json 脚本中使用 |