Javascript 如何从webpack.config.js文件访问环境变量?
我尝试通过process.env.env_name从webpack.config.js访问环境变量, 虽然我可以通过webpack.config.js中的process.env.env_名称在本地访问my.env中的环境变量,但我无法访问config/default.js文件中声明的环境变量。有什么想法吗?—— 选项1-网页包文件上的变量 您可以在脚本上传入环境变量:Javascript 如何从webpack.config.js文件访问环境变量?,javascript,node.js,webpack,Javascript,Node.js,Webpack,我尝试通过process.env.env_name从webpack.config.js访问环境变量, 虽然我可以通过webpack.config.js中的process.env.env_名称在本地访问my.env中的环境变量,但我无法访问config/default.js文件中声明的环境变量。有什么想法吗?—— 选项1-网页包文件上的变量 您可以在脚本上传入环境变量: webpack --env.MY_VARIABLE=VALUE --env.MY_OTHER_VARIABLE=OTHER_VA
webpack --env.MY_VARIABLE=VALUE --env.MY_OTHER_VARIABLE=OTHER_VALUE
并访问它:
...
module.exports=env=>{
//在此处使用环境:
console.log'MY_VARIABLE:',env.MY_VARIABLE;//'VALUE'
...
};
选项2-应用程序上的变量
或者您可以使用一些包从env文件中读取它,如
运行npm i dotenv
将其导入您的webpack.config.js文件:
//如果.env与webpack.config.js位于同一文件夹中
var dotenv=require'dotenv'
//如果它位于其他地方
var dotenv=require'dotenv'.config{path:'/full/custom/path/to/your/env/vars'};
//同上,但具有抽象性
var dotenv=require'dotenv'.config{path:uu dirname+'/.env'};
最后:
// define a new plugin on your webpack
plugins: [
...
new webpack.DefinePlugin({
// try:
"process.env": dotenv.parsed
// or:
'process.env': JSON.stringify(dotenv.config().parsed)
}),
]
现在,您可以将应用程序中的变量读取为process.env.MY_变量,该变量在.env.选项1-网页包文件中的变量中定义
您可以在脚本上传入环境变量:
webpack --env.MY_VARIABLE=VALUE --env.MY_OTHER_VARIABLE=OTHER_VALUE
并访问它:
...
module.exports=env=>{
//在此处使用环境:
console.log'MY_VARIABLE:',env.MY_VARIABLE;//'VALUE'
...
};
选项2-应用程序上的变量
或者您可以使用一些包从env文件中读取它,如
运行npm i dotenv
将其导入您的webpack.config.js文件:
//如果.env与webpack.config.js位于同一文件夹中
var dotenv=require'dotenv'
//如果它位于其他地方
var dotenv=require'dotenv'.config{path:'/full/custom/path/to/your/env/vars'};
//同上,但具有抽象性
var dotenv=require'dotenv'.config{path:uu dirname+'/.env'};
最后:
// define a new plugin on your webpack
plugins: [
...
new webpack.DefinePlugin({
// try:
"process.env": dotenv.parsed
// or:
'process.env': JSON.stringify(dotenv.config().parsed)
}),
]
现在,您可以将应用程序中的变量读取为process.env.MY_变量,该变量在.env中定义。您可以像这样使用webpack.DefinePlugin
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development'),
'BASE_URL': JSON.stringify('http://localhost:5000/')
}
})
],
process.env.BASE_URL
然后像这样读入js代码
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development'),
'BASE_URL': JSON.stringify('http://localhost:5000/')
}
})
],
process.env.BASE_URL
您可以像这样使用webpack.DefinePlugin
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development'),
'BASE_URL': JSON.stringify('http://localhost:5000/')
}
})
],
process.env.BASE_URL
然后像这样读入js代码
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development'),
'BASE_URL': JSON.stringify('http://localhost:5000/')
}
})
],
process.env.BASE_URL