webpack 的自定义错误:检查环境变量
Custom errors for webpack: checking for env variables
我有一个用webpack编译的项目。有单独的开发和生产版本,由 NODE_ENV
环境变量区分。对于开发版本,需要另一个环境变量:REPO_PATH
.
webpack 中是否有一种方法可以检查 REPO_PATH
是否存在,抛出自定义错误并在未设置时终止构建?
我当前的解决方案依赖于 package.json
个脚本:
package.json
{
...
"scripts": {
"dev": "if test -z $REPO_PATH; then echo \"Please set REPO_PATH"; exit 0; fi && NODE_ENV=development webpack --progress --hide-modules"
}
}
这可行,但并不理想,因为我们的一些开发人员使用 windows 机器并且上面的 if/then 语句特定于 unix 系统。
它似乎也应该可以通过一个小插件或类似的东西来实现,但我不知道我在寻找什么。
到目前为止我想出的最好的解决方案是编写一个简单的 webpack 插件来检查列出的每个环境变量是否存在,如果有任何缺失则抛出错误。
var externalDevLibraries = [
'VARIABLE_1_NAME',
'VARIABLE_2_NAME',
];
class EnvCheckerPlugin {
apply(compiler) {
compiler.plugin("environment", function (compilation, callback) {
console.log('Checking for necessary env variables...')
var missingEnvVars = [];
for (let i = 0, l = devEnvVars.length; i < l; i ++) {
var env = devEnvVars[i];
if (!process.env[env]) {
missingEnvVars.push(env);
}
}
if (missingEnvVars.length) {
console.error(chalk.yellow("Please set the following env variables.\nThen, try re-running the dev build."));
console.error(chalk.red(` - ${missingEnvVars.join('\n * ')}`));
throw new Error('Missing env variables. Please see additional logging above');
}
});
}
};
此插件仅在NODE_ENV=development
时使用,如下:
if (process.env.NODE_ENV === 'development') {
// ... other dev-specific stuff
module.exports.plugins = (module.exports.plugins || []).concat([
// other dev-specific plugins...
new EnvCheckerPlugin(),
]);
}
我有一个用webpack编译的项目。有单独的开发和生产版本,由 NODE_ENV
环境变量区分。对于开发版本,需要另一个环境变量:REPO_PATH
.
webpack 中是否有一种方法可以检查 REPO_PATH
是否存在,抛出自定义错误并在未设置时终止构建?
我当前的解决方案依赖于 package.json
个脚本:
package.json
{
...
"scripts": {
"dev": "if test -z $REPO_PATH; then echo \"Please set REPO_PATH"; exit 0; fi && NODE_ENV=development webpack --progress --hide-modules"
}
}
这可行,但并不理想,因为我们的一些开发人员使用 windows 机器并且上面的 if/then 语句特定于 unix 系统。
它似乎也应该可以通过一个小插件或类似的东西来实现,但我不知道我在寻找什么。
到目前为止我想出的最好的解决方案是编写一个简单的 webpack 插件来检查列出的每个环境变量是否存在,如果有任何缺失则抛出错误。
var externalDevLibraries = [
'VARIABLE_1_NAME',
'VARIABLE_2_NAME',
];
class EnvCheckerPlugin {
apply(compiler) {
compiler.plugin("environment", function (compilation, callback) {
console.log('Checking for necessary env variables...')
var missingEnvVars = [];
for (let i = 0, l = devEnvVars.length; i < l; i ++) {
var env = devEnvVars[i];
if (!process.env[env]) {
missingEnvVars.push(env);
}
}
if (missingEnvVars.length) {
console.error(chalk.yellow("Please set the following env variables.\nThen, try re-running the dev build."));
console.error(chalk.red(` - ${missingEnvVars.join('\n * ')}`));
throw new Error('Missing env variables. Please see additional logging above');
}
});
}
};
此插件仅在NODE_ENV=development
时使用,如下:
if (process.env.NODE_ENV === 'development') {
// ... other dev-specific stuff
module.exports.plugins = (module.exports.plugins || []).concat([
// other dev-specific plugins...
new EnvCheckerPlugin(),
]);
}