Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/bs / dist / scripts / bundle / webpackConfigFactory.js
Size: Mime:
"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