UNPKG

spinjs

Version:

<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/jsapp/master/packages/spinjs/logo.svg"></a></p>

112 lines 4.99 kB
"use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); var cluster = require("cluster"); var fs = require("fs"); var minilog = require("minilog"); var BuilderDiscoverer_1 = require("./BuilderDiscoverer"); var AngularPlugin_1 = require("./plugins/AngularPlugin"); var ApolloPlugin_1 = require("./plugins/ApolloPlugin"); var BabelPlugin_1 = require("./plugins/BabelPlugin"); var CssProcessorPlugin_1 = require("./plugins/CssProcessorPlugin"); var FlowRuntimePlugin_1 = require("./plugins/FlowRuntimePlugin"); var I18NextPlugin_1 = require("./plugins/I18NextPlugin"); var ReactHotLoaderPlugin_1 = require("./plugins/ReactHotLoaderPlugin"); var ReactNativePlugin_1 = require("./plugins/ReactNativePlugin"); var ReactNativeWebPlugin_1 = require("./plugins/ReactNativeWebPlugin"); var ReactPlugin_1 = require("./plugins/ReactPlugin"); var StyledComponentsPlugin_1 = require("./plugins/StyledComponentsPlugin"); var TCombPlugin_1 = require("./plugins/TCombPlugin"); var TypeScriptPlugin_1 = require("./plugins/TypeScriptPlugin"); var VuePlugin_1 = require("./plugins/VuePlugin"); var WebAssetsPlugin_1 = require("./plugins/WebAssetsPlugin"); var WebpackPlugin_1 = require("./plugins/WebpackPlugin"); var Spin_1 = require("./Spin"); var Stack_1 = require("./Stack"); var WEBPACK_OVERRIDES_NAME = 'webpack.overrides.js'; var spinLogger = minilog('spin'); var createConfig = function (cwd, cmd, argv, builderName) { var builders = {}; var plugins = [ new WebpackPlugin_1.default(), new WebAssetsPlugin_1.default(), new CssProcessorPlugin_1.default(), new ApolloPlugin_1.default(), new TypeScriptPlugin_1.default(), new BabelPlugin_1.default(), new ReactPlugin_1.default(), new ReactHotLoaderPlugin_1.default(), new TCombPlugin_1.default(), new FlowRuntimePlugin_1.default(), new ReactNativePlugin_1.default(), new ReactNativeWebPlugin_1.default(), new StyledComponentsPlugin_1.default(), new AngularPlugin_1.default(), new VuePlugin_1.default(), new I18NextPlugin_1.default() ]; var spin = new Spin_1.default(cwd, cmd); var builderDiscoverer = new BuilderDiscoverer_1.default(spin, plugins, argv); var role = cmd; if (cmd === 'exp') { role = 'build'; } else if (cmd === 'start') { role = 'watch'; } var discoveredBuilders = builderDiscoverer.discover(); if (!discoveredBuilders) { throw new Error('Cannot find spinjs config'); } if (cluster.isMaster && argv.verbose) { spinLogger.log('SpinJS Config:\n', require('util').inspect(discoveredBuilders, false, null)); } for (var _i = 0, _a = Object.keys(discoveredBuilders); _i < _a.length; _i++) { var builderId = _a[_i]; var builder = discoveredBuilders[builderId]; var stack = builder.stack; if (builder.name !== builderName && (builder.enabled === false || builder.roles.indexOf(role) < 0)) { continue; } if (spin.dev && builder.webpackDll && !stack.hasAny('server') && !builderName) { var dllBuilder = __assign({}, builder); dllBuilder.name = builder.name + 'Dll'; dllBuilder.require = builder.require; dllBuilder.parent = builder; dllBuilder.stack = new Stack_1.default(dllBuilder.stack.technologies, 'dll'); builders[builderId.split('[')[0] + "[" + builder.name + "Dll]"] = dllBuilder; builder.child = dllBuilder; } builders[builderId] = builder; } var _loop_1 = function (builderId) { var builder = builders[builderId]; var overridesConfig = builder.overridesConfig || WEBPACK_OVERRIDES_NAME; var overrides = fs.existsSync(overridesConfig) ? builder.require('./' + overridesConfig) : {}; builder.depPlatforms = overrides.dependencyPlatforms || builder.depPlatforms || {}; builder.dllExcludes = builder.dllExcludes || []; builder.plugins.forEach(function (plugin) { return plugin.configure(builder, spin); }); var strategy = { entry: 'replace', stats: 'replace' }; if (overrides[builder.name]) { builder.config = spin.mergeWithStrategy(strategy, builder.config, overrides[builder.name]); } builder.config = spin.createConfig(builder, 'webpack', builder.config); }; for (var _b = 0, _c = Object.keys(builders); _b < _c.length; _b++) { var builderId = _c[_b]; _loop_1(builderId); } return { builders: builders, spin: spin }; }; exports.default = createConfig; //# sourceMappingURL=createConfig.js.map