webpack-extension-manifest-plugin
Version:
Creates manifest json file based you config
1 lines • 3.68 kB
JavaScript
;require("core-js/modules/es.array.for-each"),require("core-js/modules/es.string.split"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _path=_interopRequireDefault(require("path")),_deepmerge=_interopRequireDefault(require("deepmerge")),_schemaUtils=require("schema-utils"),_webpack=_interopRequireDefault(require("webpack")),_options=_interopRequireDefault(require("./options.json"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var descriptor,i=0;i<props.length;i++)descriptor=props[i],descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Constructor}process.traceDeprecation=!0;var webpackVersion=+_webpack.default.version.split(".")[0],WebpackExtensionManifestPlugin=/*#__PURE__*/function(){function WebpackExtensionManifestPlugin(options){_classCallCheck(this,WebpackExtensionManifestPlugin),(0,_schemaUtils.validate)(_options.default,options,{name:this.constructor.name}),this.options=options}return _createClass(WebpackExtensionManifestPlugin,[{key:"requireWatch",value:function requireWatch(compilation,id){var idPath=_path.default.resolve(process.cwd(),id);compilation.fileDependencies.add(idPath);var idModule=require(idPath);return delete require.cache[require.resolve(idPath)],idModule}},{key:"resolveConfig",value:function resolveConfig(compilation,config){return"string"==typeof config?this.requireWatch(compilation,config):config}},{key:"generateJson",value:function generateJson(compilation){var json;if(json="string"==typeof this.options.config?this.requireWatch(compilation,this.options.config):"base"in this.options.config||"extend"in this.options.config?(0,_deepmerge.default)(this.resolveConfig(compilation,this.options.config.base)||{},this.resolveConfig(compilation,this.options.config.extend)||{}):this.options.config,this.options.pkgJsonProps){var packageJson=this.requireWatch(compilation,"package.json");this.options.pkgJsonProps.forEach(function(property){json[property]=packageJson[property]})}return JSON.stringify(json,void 0,this.options.minify?void 0:2)}},{key:"webpack4",value:function webpack4(_compiler){var _this=this;_compiler.hooks.emit.tap(this.constructor.name,function(compilation){var jsonString=_this.generateJson(compilation);return compilation.assets["manifest.json"]={source:function source(){return jsonString},size:function size(){return jsonString.length}},!0})}},{key:"webpack5",value:function webpack5(_compiler){var _this2=this;_compiler.hooks.thisCompilation.tap(this.constructor.name,function(compilation){return compilation.hooks.processAssets.tap({name:_this2.constructor.name,stage:compilation.PROCESS_ASSETS_STAGE_ADDITIONS},function(){var jsonString=_this2.generateJson(compilation);compilation.emitAsset("manifest.json",{source:function source(){return jsonString},size:function size(){return jsonString.length}})}),!0})}},{key:"apply",value:function apply(compiler){switch(webpackVersion){case 5:this.webpack5(compiler);break;case 4:this.webpack4(compiler);break;default:throw new Error("Unsupported webpack version");}}}]),WebpackExtensionManifestPlugin}();exports.default=WebpackExtensionManifestPlugin,module.exports=exports.default;