codecamp

EnvironmentPlugin

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)
});


DllPlugin
EvalSourceMapDevToolPlugin
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }