@entr/html-beautify-webpack-plugin
Version:
Adapter for beautifyjs as webpack plugin, chained with HtmlWebpackPlugin
60 lines (46 loc) • 2.24 kB
JavaScript
;
require("core-js/modules/es.promise");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
var _jsBeautify = require("js-beautify");
var _lodash = require("lodash");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function processHtml(htmlPluginData, beautifyConfig) {
htmlPluginData.html = (0, _jsBeautify.html)(htmlPluginData.html, beautifyConfig);
}
class HtmlBeautifyPlugin {
constructor(userOptions = {}) {
this.pluginName = 'HtmlBeautifyPlugin';
const defaultOptions = {
beautifyOptions: {
indent_size: 4,
indent_with_tabs: false,
html: {
end_with_newline: true,
indent_inner_html: true,
preserve_newlines: true
}
}
};
this.options = (0, _lodash.merge)({}, defaultOptions, userOptions);
}
apply(compiler) {
const beautifyOptions = this.options.beautifyOptions;
const pluginName = this.pluginName;
compiler.hooks.compilation.tap(pluginName, compilation => _htmlWebpackPlugin.default.getHooks(compilation).afterTemplateExecution.tapPromise(pluginName, /*#__PURE__*/function () {
var _ref = _asyncToGenerator(function* (htmlPluginData) {
return processHtml(htmlPluginData, beautifyOptions);
});
return function (_x) {
return _ref.apply(this, arguments);
};
}()));
}
}
var _default = HtmlBeautifyPlugin;
exports.default = _default;