UNPKG

polymerx-cli

Version:

Unlock the power of Polymer 3, Web Components and modern web tools.

100 lines (79 loc) 2.38 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _webpack = _interopRequireDefault(require("webpack")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class WebpackConfigHelpers { constructor(cwd) { this._cwd = cwd; } get webpack() { return _webpack.default; } getLoaders(config) { return this.getRules(config).map(({ rule, index }) => ({ rule, ruleIndex: index, loaders: rule.loaders || rule.use || rule.loader })); } getRules(config) { return [...(config.module.loaders || []), ...(config.module.rules || [])].map((rule, index) => ({ index, rule })); } getPlugins(config) { return (config.plugins || []).map((plugin, index) => ({ index, plugin })); } getRulesByMatchingFile(config, file) { const filePath = _path.default.resolve(this._cwd, file); return this.getRules(config).filter(w => w.rule.test && w.rule.test.exec(filePath)); } getLoadersByName(config, name) { return this.getLoaders(config).map(({ rule, ruleIndex, loaders }) => Array.isArray(loaders) ? loaders.map((loader, loaderIndex) => ({ rule, ruleIndex, loader, loaderIndex })) : [{ rule, ruleIndex, loader: loaders, loaderIndex: -1 }]).reduce((arr, loaders) => arr.concat(loaders), []).filter(({ loader }) => loader === name || loader && loader.loader === name); } getPluginsByName(config, name) { return this.getPlugins(config).filter(w => w.plugin && w.plugin.constructor && w.plugin.constructor.name === name); } getPluginsByType(config, type) { return this.getPlugins(config).filter(w => w.plugin instanceof type); } setHtmlTemplate(config, template) { let isPath; try { _fs.default.statSync(template); isPath = true; } catch (error) {} const templatePath = isPath ? `!!ejs-loader!${_path.default.resolve(this._cwd, template)}` : template; const { plugin: htmlWebpackPlugin } = this.getPluginsByName(config, 'HtmlWebpackPlugin')[0]; htmlWebpackPlugin.options.template = templatePath; } } exports.default = WebpackConfigHelpers;