
前端环境变量
NodeH1
系统环境变量
- Windows
set NODE_ENV=production - Linux
NODE_ENV=production
可以在node环境中通过process.env 获取,为了平台兼容性,可以使用cross-env来设置环境变量cross-env NODE_ENV=production
除了在命令行指定环境变量外,如果通过npm运行,还可以的package.json中指定环境环境
jsx
{"name" : "foo","config" : { "port" : "8080" },"scripts" : { "start" : "node server.js" }}
config 中设置的变量(也叫做Per-Package Config Settings)通过npm_package_config_port 环境变量来读取
通过npm config set 或者npm_config_ 环境变量设置的变量,通过npm_config_port 来读取
添加下面的脚本来测试环境变量
jsx
"scripts": {"env": "node -p \"process.env.foo\"",}
process.env.NODE_ENVH1
process.env.NODE_ENV 环境是一个重要的约定俗成的变量,用来标识当前的目标环境,如果是生产环境则值为production ,开发环境则为development
WebpackH1
Node环境变量只能在Node环境下才能获取到的,前端项目一般在浏览器环境运行,是无法获取到的。webpack.DefinePlugin 能够在编译时创建全局变量,让浏览器运行时环境获取到,可以通过这个插件将Node环境变量传递个运行时
bash
new webpack.DefinePlugin({'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)});
ModeH2
Webpack4 可以设置mode参数,当mode 的值未procution时,会自动定义DefinePlugin以及NODE_ENV
jsx
// webpack.production.config.jsmodule.exports = {mode: 'production',...plugins: [new TerserPlugin(/* ... */),new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("production") }),new webpack.optimize.ModuleConcatenationPlugin(),new webpack.NoEmitOnErrorsPlugin()]}
EnvH2
Webpack中如果使用node环境变量外,还可以通过—-env 的命令行参数设置环境参数(在Webpack脚本中读取)
jsx
webpack --env NODE_ENV=local --env production --progressmodule.exports = env => {// Use env.<YOUR VARIABLE> here:console.log('NODE_ENV: ', env.NODE_ENV); // 'local'console.log('Production: ', env.production); // truereturn {entry: './src/index.js',output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist'),},};};
create-react-appH1
create-react-app中会把REACT_APP_ 开头的环境变量通过webpack.DefinePlugin 传入到运行时。
除了常规的node环境下定义的环境变量的方式外,create-react-app支持从.env 文件中读取环境变量
create-react-app 会读取文件
.env: Default..env.local: Local overrides. This file is loaded for all environments except test..env.development,.env.test,.env.production: Environment-specific settings..env.development.local,.env.test.local,.env.production.local:
命令会读取的文件
npm start:.env.development.local,.env.local,.env.development,.envnpm run build:.env.production.local,.env.local,.env.production,.envnpm test:.env.test.local,.env.test,.env(note.env.localis missing)
指定额外的.env文件H2
需要配合env-cmd 使用
安装
jsx
npm install env-cmd --save
使用
jsx
{"scripts": {"build:staging": "env-cmd -f .env.staging npm run build"}}
评论
新的评论
上一篇
Spring多数据源与事务
多数据源 实际业务中经常会遇到需要访问多个数据库的情况,有些情况是表和数据库之间的关系是固定的,而有些情况同一张表会存在于多个数据库中。 CASE 1 针对第一种情况,通过Spring的配置就能完成,例如 CASE 2 第二种情况,则通过框架提供的 AbstractRoutin…
下一篇
TypeScript Typing总结
有两种类型的 .ts 文件 scripts 其中定义的对象是全局的,只需要在 tsconfig.json 的 include 属性所定义的路径中。scripts文件不能包含任何 import/export 相关语句,否则他会变为modules。 modules 其中定…
