summaryrefslogtreecommitdiffstats
path: root/node_modules/webpack/lib/LibManifestPlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/LibManifestPlugin.js')
-rw-r--r--node_modules/webpack/lib/LibManifestPlugin.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/LibManifestPlugin.js b/node_modules/webpack/lib/LibManifestPlugin.js
new file mode 100644
index 0000000..05e98b0
--- /dev/null
+++ b/node_modules/webpack/lib/LibManifestPlugin.js
@@ -0,0 +1,90 @@
+/*
+ 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;