@gluons/vue-pack-splitchunks-plugin
Version:
A vue-pack plugin to customize webpack's splitChunks.
40 lines (39 loc) • 1.59 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tapSplitChunks_1 = __importDefault(require("./tapSplitChunks"));
/**
* webpack's `splitChunks` customization plugin.
*
* @export
* @param {SplitChunksPluginOptions} [options]
* @returns {Plugin}
*/
function SplitChunksPlugin(options) {
return (context) => {
if (!options) {
return;
}
const { webpackConfigs } = context;
if (typeof options.tapAll === 'function') {
Object.keys(webpackConfigs).forEach(key => {
const config = webpackConfigs[key];
tapSplitChunks_1.default(config, options.tapAll);
});
}
typeof options.tapCJS === 'function' &&
tapSplitChunks_1.default(webpackConfigs.commonJSConfig, options.tapCJS);
typeof options.tapESM === 'function' &&
tapSplitChunks_1.default(webpackConfigs.esModuleConfig, options.tapESM);
typeof options.tapSSR === 'function' &&
tapSplitChunks_1.default(webpackConfigs.ssrConfig, options.tapSSR);
if (typeof options.tapWeb === 'function') {
tapSplitChunks_1.default(webpackConfigs.webUnminConfig, options.tapWeb);
tapSplitChunks_1.default(webpackConfigs.webMinConfig, options.tapWeb);
}
};
}
exports.default = SplitChunksPlugin;
module.exports = SplitChunksPlugin;