UNPKG

bloom-layout

Version:
172 lines (133 loc) 6.32 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _copyWebpackPlugin = require('copy-webpack-plugin'); var _copyWebpackPlugin2 = _interopRequireDefault(_copyWebpackPlugin); var _htmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin'); var _htmlWebpackIncludeAssetsPlugin2 = _interopRequireDefault(_htmlWebpackIncludeAssetsPlugin); var _ajv = require('ajv'); var _ajv2 = _interopRequireDefault(_ajv); var _configSchema = require('./configSchema.json'); var _configSchema2 = _interopRequireDefault(_configSchema); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var HtmlWebpackExternalsPlugin = function () { function HtmlWebpackExternalsPlugin(config) { var _this = this; _classCallCheck(this, HtmlWebpackExternalsPlugin); HtmlWebpackExternalsPlugin.validateArguments(config); this.assetsToPrepend = []; this.assetsToAppend = []; this.assetsToCopy = []; this.externals = {}; var externals = config.externals, hash = config.hash, outputPath = config.outputPath, publicPath = config.publicPath, files = config.files, enabled = config.enabled; this.hash = hash; this.outputPath = outputPath; this.publicPath = publicPath; this.files = files; this.enabled = enabled; externals.forEach(function (_ref) { var module = _ref.module, entry = _ref.entry, global = _ref.global, supplements = _ref.supplements, append = _ref.append; _this.externals[module] = global; var localEntries = []; var entries = (Array.isArray(entry) ? entry : [entry]).map(function (entry) { if (typeof entry === 'string') { entry = { path: entry, type: undefined }; } if (HtmlWebpackExternalsPlugin.URL_ENTRY.test(entry.path)) { return entry; } var localEntry = `${module}/${entry.path}`; localEntries.push(localEntry); return _extends({}, entry, { path: localEntry }); }); if (append) { _this.assetsToAppend = [].concat(_toConsumableArray(_this.assetsToAppend), _toConsumableArray(entries)); } else { _this.assetsToPrepend = [].concat(_toConsumableArray(_this.assetsToPrepend), _toConsumableArray(entries)); } _this.assetsToCopy = [].concat(_toConsumableArray(_this.assetsToCopy), localEntries, _toConsumableArray(supplements.map(function (asset) { return `${module}/${asset}`; }))); }); } _createClass(HtmlWebpackExternalsPlugin, [{ key: 'apply', value: function apply(compiler) { var _this2 = this; if (!this.enabled) { return; } if (!compiler.options.externals) { compiler.options.externals = this.externals; } else if (Array.isArray(compiler.options.externals)) { compiler.options.externals.push(this.externals); } else if (typeof compiler.options.externals === 'object') { compiler.options.externals = _extends({}, compiler.options.externals, this.externals); } var publicPath = function () { if (_this2.publicPath != null) { return _this2.publicPath; } else if (compiler.options.output.publicPath != null) { return compiler.options.output.publicPath; } else { return ''; } }(); var pluginsToApply = []; pluginsToApply.push(new _copyWebpackPlugin2.default(this.assetsToCopy.map(function (asset) { return { from: `node_modules/${asset}`, to: `${_this2.outputPath}/${asset}` }; }))); var createAssetsPlugin = function createAssetsPlugin(assets, append) { if (assets.length) { pluginsToApply.push(new _htmlWebpackIncludeAssetsPlugin2.default({ assets: assets.map(function (asset) { return HtmlWebpackExternalsPlugin.URL_ENTRY.test(asset.path) ? asset : _extends({}, asset, { path: `${publicPath}${_this2.outputPath}/${asset.path}` }); }), append, hash: _this2.hash, files: _this2.files == null ? undefined : _this2.files, publicPath: '' })); } }; createAssetsPlugin(this.assetsToPrepend, false); createAssetsPlugin(this.assetsToAppend, true); pluginsToApply.forEach(function (plugin) { return plugin.apply(compiler); }); } }]); return HtmlWebpackExternalsPlugin; }(); HtmlWebpackExternalsPlugin.validateArguments = function () { var ajv = new _ajv2.default({ useDefaults: true, removeAdditional: true }); var validateConfig = ajv.compile(_configSchema2.default); return function (config) { if (!validateConfig(config)) { throw new TypeError(ajv.errorsText(validateConfig.errors)); } }; }(); HtmlWebpackExternalsPlugin.URL_ENTRY = /^(http:|https:)?\/\//; exports.default = HtmlWebpackExternalsPlugin; module.exports = exports['default']; //# sourceMappingURL=HtmlWebpackExternalsPlugin.js.map