Repository URL to install this package:
|
Version:
1.1.7 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint complexity: "OFF" */
/* eslint max-statements: "OFF" */
const di_1 = require("@skava/di");
const _plugins_1 = require("../.plugins");
const oneConfig_1 = require("../../config/oneConfig");
const fromBuildOptionsToParams_1 = require("./fromBuildOptionsToParams");
const fromBuildOptionsToPaths_1 = require("./fromBuildOptionsToPaths");
/** mutates... */
function decorateConfig(buildOptions) {
const options = buildOptions;
options.client = options.bundles.client;
options.server = options.bundles.server;
// log.quick(options)
// This is either our "server" or "client" bundle.
// Otherwise it must be an additional node bundle.
options.bundleConfig = options.isServer
? options.bundles.server
: options.isClient
? options.bundles.client
: undefined;
fromBuildOptionsToPaths_1.fromBuildOptionsToPaths(options);
}
// https://github.com/tessin/tessin-mini/blob/master/webpack/ManifestPlugin.js#L1
// https://github.com/tessin/tessin-mini/blob/master/webpack/webpack.config.js
function webpackConfigFactory(someBuildOptions) {
const buildOptions = Object.assign({}, oneConfig_1.PROPERTIES, fromBuildOptionsToParams_1.fromBuildOptionsToParams(someBuildOptions));
console.log('buildOptions: ', buildOptions);
decorateConfig(buildOptions);
const { target, isClient, isDev } = buildOptions;
const webpackConfig = {
watch: undefined,
mode: undefined,
// Define our entry chunks for our bundle.
entry: {},
// Bundle output configuration.
output: {},
target: isClient ? 'web' : 'node',
node: {},
devtool: false,
performance: {},
resolve: {},
externals: [],
plugins: [],
module: {
rules: [],
},
};
/**
* @todo add a `before` & `after` instead?
*/
if (di_1.config.has('buildSystemConfig') === true) {
const tap = di_1.config.get('buildSystemConfig');
tap(webpackConfig, buildOptions);
}
_plugins_1.plugins.forEach((plugin, key) => {
plugin(webpackConfig, buildOptions);
});
if (di_1.config.has('buildSystemConfig') === true) {
const tap = di_1.config.get('buildSystemConfig');
tap(webpackConfig, buildOptions);
}
// Apply the configuration middleware.
return webpackConfig;
}
exports.webpackConfigFactory = webpackConfigFactory;
//# sourceMappingURL=webpackConfigFactory.js.map