@micro-app/plugin-webpack
Version:
[Plugin] webpack adapter plugin.
50 lines (43 loc) • 1.71 kB
JavaScript
module.exports = function validateWebpackConfig(
webpackConfig,
api,
options,
target = 'web'
) {
const logger = api.logger;
const singleConfig = Array.isArray(webpackConfig)
? webpackConfig[0]
: webpackConfig;
const actualTargetDir = singleConfig.output.path;
if (actualTargetDir !== api.resolve(options.outputDir)) {
// user directly modifies output.path in configureWebpack or chainWebpack.
// this is not supported because there's no way for us to give copy
// plugin the correct value this way.
logger.warn('[validate]', 'outputDir:', options.outputDir, '!== output.path:', singleConfig.output.path);
logger.error(
'Configuration Error: ' +
'Avoid modifying webpack output.path directly. ' +
'Use the "outputDir" option instead.'
);
// fixed
options.outputDir = singleConfig.output.path;
}
if (actualTargetDir === api.root) {
logger.warn('[validate]', 'root:', api.root, '!== output.path:', singleConfig.output.path);
logger.throw(
'Configuration Error: ' +
'Do not set output directory to project root.'
);
}
if (singleConfig.output.publicPath !== options.publicPath) {
logger.warn('[validate]', 'publicPath:', options.publicPath, '!== output.publicPath:', singleConfig.output.publicPath);
logger.error(
'Configuration Error: ' +
'Avoid modifying webpack output.publicPath directly. ' +
'Use the "publicPath" option instead.'
);
// fixed
options.publicPath = singleConfig.output.publicPath;
}
};
;