webpack/lib/EnvironmentPlugin.js

39 lines
1.2 KiB
JavaScript
Raw Normal View History

2015-01-07 06:02:44 +08:00
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Authors Simen Brekken @simenbrekken, Einar Löve @einarlove
2015-01-07 06:02:44 +08:00
*/
var DefinePlugin = require("./DefinePlugin");
function EnvironmentPlugin(keys) {
if (typeof keys === 'string') {
throw new Error(
"Deprecation notice: EnvironmentPlugin now only takes a single argument."
+ " Either an array of keys or object with default values."
+ "\nSee http://webpack.github.io/docs/list-of-plugins.html#environmentplugin for example."
);
}
this.keys = Array.isArray(keys) ? keys : Object.keys(keys);
this.defaultValues = Array.isArray(keys) ? {} : keys;
2015-01-07 06:02:44 +08:00
}
EnvironmentPlugin.prototype.apply = function(compiler) {
compiler.apply(new DefinePlugin(this.keys.reduce(function(definitions, key) {
var value = process.env[key] || this.defaultValues[key];
2015-01-07 06:02:44 +08:00
2016-11-10 17:42:27 +08:00
if(value === undefined) {
2015-01-07 06:02:44 +08:00
compiler.plugin("this-compilation", function(compilation) {
var error = new Error(key + " environment variable is undefined.");
error.name = "EnvVariableNotDefinedError";
compilation.warnings.push(error);
});
}
definitions["process.env." + key] = value ? JSON.stringify(value) : "undefined";
return definitions;
}.bind(this), {})));
2015-01-07 06:02:44 +08:00
};
module.exports = EnvironmentPlugin;