ffbt
Version:
Build a Typescript app without pain
47 lines (46 loc) • 2.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createWebpackConfig = void 0;
const webpackMerge = require("webpack-merge");
const layers_1 = require("./layers");
function createWebpackConfig(projectConfig, workingDirectory) {
const layers = [
layers_1.registerLayer(layers_1.FFBTLayers.base, require("./layers/base")),
layers_1.registerLayer(layers_1.FFBTLayers.moduleAliases, require("./layers/module-aliases")),
layers_1.registerLayer(layers_1.FFBTLayers.moduleNoParse, require("./layers/module-no-parse")),
layers_1.registerLayer(layers_1.FFBTLayers.outputStats, require("./layers/output-stats")),
layers_1.registerLayer(layers_1.FFBTLayers.typescript, require("./layers/typescript")),
layers_1.registerLayer(layers_1.FFBTLayers.styles, require("./layers/styles")),
layers_1.registerLayer(layers_1.FFBTLayers.indexFile, require("./layers/index-file")),
layers_1.registerLayer(layers_1.FFBTLayers.includeHtml, require("./layers/include-html")),
layers_1.registerLayer(layers_1.FFBTLayers.staticAssets, require("./layers/static-assets")),
layers_1.registerLayer(layers_1.FFBTLayers.globals, require("./layers/globals")),
layers_1.registerLayer(layers_1.FFBTLayers.devServer, require("./layers/dev-server")),
];
if (projectConfig.env.showBuildNotifications) {
layers.push(layers_1.registerLayer(layers_1.FFBTLayers.buildNotifications, require("./layers/build-notfications")));
}
if (projectConfig.env.analyzeBundle) {
layers.push(layers_1.registerLayer(layers_1.FFBTLayers.bundleAnalyze, require("./layers/bundle-analyze")));
}
if (projectConfig.env.cleanDistFolderBeforeBuild) {
layers.push(layers_1.registerLayer(layers_1.FFBTLayers.cleanDist, require("./layers/clean-dist")));
}
if (projectConfig.env.enableCacheBusting) {
layers.push(layers_1.registerLayer(layers_1.FFBTLayers.caching, require("./layers/caching")));
}
const customWebpackLayer = projectConfig.configureWebpack;
if (customWebpackLayer) {
layers.push(layers_1.registerLayer(layers_1.FFBTLayers.custom, customWebpackLayer));
}
const disabledLayers = projectConfig.disableWebpackLayers(projectConfig);
const layersWithoutDisabled = layers.filter(layer => !disabledLayers.includes(layer.name));
const configuredWebpackLayers = layersWithoutDisabled.map(layer => layer.configurator(projectConfig));
if (projectConfig.env.verboseMode) {
console.log("Enabled webpack config layers:");
console.log(layersWithoutDisabled.map(layer => layer.name));
console.log();
}
return webpackMerge.merge(...configuredWebpackLayers);
}
exports.createWebpackConfig = createWebpackConfig;