UNPKG

@zohodesk/client_build_tool

Version:

A CLI tool to build web applications and client libraries

47 lines (40 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _webpack = require("webpack"); /* eslint-disable class-methods-use-this */ const pluginName = 'CssCustomOrderPlugin'; // TODO: Check for css minimizer plugin class CssCustomOrderPlugin { constructor(className) { this.className = className || 'customCss'; } apply(compiler) { const { RawSource } = compiler.webpack.sources; compiler.hooks.compilation.tap(pluginName, compilation => { compilation.hooks.processAssets.tapAsync({ name: pluginName, stage: _webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE }, (assets, callback) => { Object.keys(assets).filter(file => file.includes('runtime')).forEach(filename => { try { let source = assets[filename].source().toString(); let changedCode = `var referenceTag = document.getElementById(${this.className}); document.head.insertBefore(linkTag, referenceTag);`; const result = source.replace('document.head.appendChild(linkTag);', changedCode); compilation.updateAsset(filename, new RawSource(result)); callback(); } catch (e) { console.error("issue in CssCustomOrderPlugin"); compilation.errors.push(e); callback(e); } }); }); }); } } exports.default = CssCustomOrderPlugin;