UNPKG

ffbt

Version:

Build a Typescript app without pain

47 lines (46 loc) 2.8 kB
"use strict"; 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;