NODE_ENV獲取環(huán)境變量
let env = app.get('env')
let env = process.env.NODE_ENV
//默認 NODE_ENV 為環(huán)境變量名稱
//可自行在 process.env 對象下定義需要使用的變量,在項目中可以根據(jù)
//不同的 env 值設(shè)置 defaultUrl 或者其他值
在webpack 打包的項目/Node JS項目中,可以安裝 cross-env(跨Win/Linux平臺設(shè)置 process.env值) 插件缸逃,在 package.json 文件中
設(shè)置不同的運行腳本垃它,比如:
script:{
"start": "node build/dev-server.js",
"buildStag": "cross-env cross-env NODE_ENV=stag node build/dev-server.js",
"buildProd": "cross-env cross-env NODE_ENV=production node build/dev-server.js",
}
//根據(jù)上述腳本即可設(shè)置不同的 NODE_ENV 值扶踊,在文件中設(shè)置值或者加載不同的設(shè)置文件收津,以上配置在NODE項目中可正常運行
Vue項目中使用
在使用Vue Cli構(gòu)建的項目中歹颓,
需要將process.env 設(shè)置其他變量名進行使用铜秆,如:BUILD_ENV
在 package.json 的 script 字段中作如下配置:
"scripts": {
"start": "cross-env BUILD_ENV=dev node build/dev-server.js",
"dev": "cross-env BUILD_ENV=dev node build/dev-server.js",
"build": "cross-env BUILD_ENV=dev node build/build.js",
"buildDev": "cross-env BUILD_ENV=dev node build/build.js",
"buildStag": "cross-env BUILD_ENV=stag node build/build.js",
"buildProd": "cross-env BUILD_ENV=prod node build/build.js",
"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
},
由于搭配webpack重新設(shè)置了 process.env 的值奢米,需要在
webpack.dev.conf.js 及 webpack.prod.conf.js 文件中:
webpack.dev.conf.js
new webpack.DefinePlugin({
'process.env': config.dev.env,
'process.env.BUILD_ENV': JSON.stringify(process.env.BUILD_ENV)//增加此行
})
webpack.prod.conf.js
new webpack.DefinePlugin({
'process.env': env,
'process.env.BUILD_ENV': JSON.stringify(process.env.BUILD_ENV)
})
即在該插件設(shè)置并暴露出 process.env 對象后抓韩,再增加
process.env.BUILD_ENV 字段并進行賦值
此時,可在前端JS文件中通過 process.env.BUILD_ENV 獲得 package.json中的script獲得對應值鬓长,進行其他操作谒拴,比如,引入不同環(huán)境的配置文件涉波,如:
在config文件夾中增加 buildConfig 文件夾英上,其中新建以下3個文件:
dev.config.js stag.config.js prod.config.js,
在每個文件中采用module.exports的方式導出變量,如:
module.exports = {
BASE_URL: 'https://dev-api.greigreat.com',
BASE_STATIC_URL:'https://static1.greigreat.com/'
}
在其他文件中使用
//引入環(huán)境配置文件
//process.env.BUILD_ENV 為 webpack中的DefinePlugin暴露出的環(huán)境變量
const buildConfig = require('./buildConfig/' + process.env.BUILD_ENV + '.config')
export default {
baseUrl: buildConfig.BASE_URL,
baseStaticUrl: buildConfig.BASE_STATIC_URL
}
則可以以對象的形式獲取 buildConfig并使用