UNPKG

spinjs

Version:

[![Join the chat at https://gitter.im/sysgears/spinjs](https://badges.gitter.im/sysgears/spinjs.svg)](https://gitter.im/sysgears/spinjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![npm version](https://badge.fury.io/js/spi

156 lines 7 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 path = require("path"); var upDirs_1 = require("./upDirs"); var BuilderDiscoverer_1 = require("./BuilderDiscoverer"); var ConfigReader_1 = require("./ConfigReader"); 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 RestPlugin_1 = require("./plugins/RestPlugin"); 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 getProjectRoot = function (builder) { var pkgPathList = upDirs_1.default(builder.require.cwd, 'package.json'); var projectRoot; for (var _i = 0, pkgPathList_1 = pkgPathList; _i < pkgPathList_1.length; _i++) { var pkg = pkgPathList_1[_i]; if (fs.existsSync(pkg)) { try { JSON.parse(fs.readFileSync(pkg, 'utf8')); projectRoot = path.dirname(pkg); } catch (e) { } } } return projectRoot; }; var createBuilders = function (_a) { var cwd = _a.cwd, cmd = _a.cmd, argv = _a.argv, builderName = _a.builderName, builderOverrides = _a.builderOverrides, genConfigOverrides = _a.genConfigOverrides; 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(), new RestPlugin_1.default() ]; var spin = new Spin_1.default(cwd, cmd); var role = cmd; if (cmd === 'exp') { role = 'build'; } else if (cmd === 'start') { role = 'watch'; } var discoveredBuilders; if (cluster.isMaster) { var builderDiscoverer = new BuilderDiscoverer_1.default(spin, plugins, argv); discoveredBuilders = builderDiscoverer.discover(builderOverrides); } else { discoveredBuilders = new ConfigReader_1.default(spin, plugins).readConfig({ filePath: process.env.BUILDER_CONFIG_PATH, builderOverrides: builderOverrides }); } 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)); } var _loop_1 = function (builderId) { var builder = discoveredBuilders[builderId]; var stack = builder.stack; if (builder.roles.indexOf(role) < 0 || (process.env.BUILDER_ID && builderId !== process.env.BUILDER_ID)) { return "continue"; } builder.enabled = (builder.enabled !== false && !argv.d) || (builder.enabled !== false && argv.d && ![].concat(argv.d).some(function (regex) { return new RegExp(regex).test(builderId); })) || (builder.enabled === false && argv.e && [].concat(argv.e).some(function (regex) { return new RegExp(regex).test(builderId); })) || builder.name === builderName; if (builder.enabled && (!cluster.isMaster || ['exp', 'test'].indexOf(cmd) >= 0)) { builder.projectRoot = getProjectRoot(builder); } 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.bind.apply(Stack_1.default, [void 0, dllBuilder.name].concat(dllBuilder.stack.technologies, ['dll'])))(); builders[builderId.split('[')[0] + "[" + builder.name + "Dll]"] = dllBuilder; builder.child = dllBuilder; } builders[builderId] = builder; }; for (var _i = 0, _b = Object.keys(discoveredBuilders); _i < _b.length; _i++) { var builderId = _b[_i]; _loop_1(builderId); } var _loop_2 = function (builderId) { var builder = builders[builderId]; if (!builder.enabled) { return "continue"; } 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.mergeWithInStrategy(spin.createConfig(builder, 'webpack', builder.config), genConfigOverrides); }; for (var _c = 0, _d = Object.keys(builders); _c < _d.length; _c++) { var builderId = _d[_c]; _loop_2(builderId); } return { builders: builders, spin: spin }; }; exports.default = createBuilders; //# sourceMappingURL=createBuilders.js.map