| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const path = require("path");
 
- const asyncLib = require("neo-async");
 
- const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
 
- class LibManifestPlugin {
 
- 	constructor(options) {
 
- 		this.options = options;
 
- 	}
 
- 	apply(compiler) {
 
- 		compiler.hooks.emit.tapAsync(
 
- 			"LibManifestPlugin",
 
- 			(compilation, callback) => {
 
- 				asyncLib.forEach(
 
- 					compilation.chunks,
 
- 					(chunk, callback) => {
 
- 						if (!chunk.isOnlyInitial()) {
 
- 							callback();
 
- 							return;
 
- 						}
 
- 						const targetPath = compilation.getPath(this.options.path, {
 
- 							hash: compilation.hash,
 
- 							chunk
 
- 						});
 
- 						const name =
 
- 							this.options.name &&
 
- 							compilation.getPath(this.options.name, {
 
- 								hash: compilation.hash,
 
- 								chunk
 
- 							});
 
- 						const manifest = {
 
- 							name,
 
- 							type: this.options.type,
 
- 							content: Array.from(chunk.modulesIterable, module => {
 
- 								if (
 
- 									this.options.entryOnly &&
 
- 									!module.reasons.some(
 
- 										r => r.dependency instanceof SingleEntryDependency
 
- 									)
 
- 								) {
 
- 									return;
 
- 								}
 
- 								if (module.libIdent) {
 
- 									const ident = module.libIdent({
 
- 										context: this.options.context || compiler.options.context
 
- 									});
 
- 									if (ident) {
 
- 										return {
 
- 											ident,
 
- 											data: {
 
- 												id: module.id,
 
- 												buildMeta: module.buildMeta
 
- 											}
 
- 										};
 
- 									}
 
- 								}
 
- 							})
 
- 								.filter(Boolean)
 
- 								.reduce((obj, item) => {
 
- 									obj[item.ident] = item.data;
 
- 									return obj;
 
- 								}, Object.create(null))
 
- 						};
 
- 						// Apply formatting to content if format flag is true;
 
- 						const manifestContent = this.options.format
 
- 							? JSON.stringify(manifest, null, 2)
 
- 							: JSON.stringify(manifest);
 
- 						const content = Buffer.from(manifestContent, "utf8");
 
- 						compiler.outputFileSystem.mkdirp(path.dirname(targetPath), err => {
 
- 							if (err) return callback(err);
 
- 							compiler.outputFileSystem.writeFile(
 
- 								targetPath,
 
- 								content,
 
- 								callback
 
- 							);
 
- 						});
 
- 					},
 
- 					callback
 
- 				);
 
- 			}
 
- 		);
 
- 	}
 
- }
 
- module.exports = LibManifestPlugin;
 
 
  |