EnvironmentPlugin
2023-06-02 14:51 更新
EnvironmentPlugin
是在 process.env
键上使用 DefinePlugin
的简写。
Usage
EnvironmentPlugin
接受键数组或将其键映射到默认值的对象。
new webpack.EnvironmentPlugin(['NODE_ENV', 'DEBUG']);
这等效于以下 DefinePlugin
应用程序:
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
'process.env.DEBUG': JSON.stringify(process.env.DEBUG),
});
Usage with default values
EnvironmentPlugin
支持一个对象,它将键映射到它们的默认值。如果在 process.env
中未定义键,则采用键的默认值。
new webpack.EnvironmentPlugin({
NODE_ENV: 'development', // use 'development' unless process.env.NODE_ENV is defined
DEBUG: false,
});
例子:
让我们调查一下在测试文件 entry.js
上运行之前的 EnvironmentPlugin
配置时的结果:
if (process.env.NODE_ENV === 'production') {
console.log('Welcome to production');
}
if (process.env.DEBUG) {
console.log('Debugging output');
}
在终端执行 NODE_ENV=production webpack
构建时,entry.js
变成这样:
if ('production' === 'production') {
// <-- 'production' from NODE_ENV is taken
console.log('Welcome to production');
}
if (false) {
// <-- default value is taken
console.log('Debugging output');
}
运行 DEBUG=false webpack
产生:
if ('development' === 'production') {
// <-- default value is taken
console.log('Welcome to production');
}
if ('false') {
// <-- 'false' from DEBUG is taken
console.log('Debugging output');
}
Use Case: Git Version
下面的 EnvironmentPlugin
配置提供process.env.GIT_VERSION
(如“v5.4.0-2-g25139f57f”)和 process.env.GIT_AUTHOR_DATE
(如“2020-11-04T12:25:16+01:00”)对应存储库的最后一次 Git 提交:
const child_process = require('child_process');
function git(command) {
return child_process.execSync(`git ${command}`, { encoding: 'utf8' }).trim();
}
new webpack.EnvironmentPlugin({
GIT_VERSION: git('describe --always'),
GIT_AUTHOR_DATE: git('log -1 --format=%aI'),
});
DotenvPlugin
第三方 DotenvPlugin
(dotenv-webpack
) 允许您公开(一部分)dotenv 变量:
// .env
DB_HOST=127.0.0.1
DB_PASS=foobar
S3_API=mysecretkey
new Dotenv({
path: './.env', // Path to .env file (this is the default)
safe: true, // load .env.example (defaults to "false" which does not use dotenv-safe)
});
以上内容是否对您有帮助:
更多建议: