Projekt

Obecné

Profil

Stáhnout (1.88 KB) Statistiky
| Větev: | Revize:
1 3a515b92 cagy
/*
2
	MIT License http://www.opensource.org/licenses/mit-license.php
3
	Author Tobias Koppers @sokra
4
*/
5
"use strict";
6
7
const Module = require("./Module");
8
const Template = require("./Template");
9
const { RawSource } = require("webpack-sources");
10
11
/** @typedef {import("./util/createHash").Hash} Hash */
12
13
class MultiModule extends Module {
14
	constructor(context, dependencies, name) {
15
		super("javascript/dynamic", context);
16
17
		// Info from Factory
18
		this.dependencies = dependencies;
19
		this.name = name;
20
		this._identifier = `multi ${this.dependencies
21
			.map(d => d.request)
22
			.join(" ")}`;
23
	}
24
25
	identifier() {
26
		return this._identifier;
27
	}
28
29
	readableIdentifier(requestShortener) {
30
		return `multi ${this.dependencies
31
			.map(d => requestShortener.shorten(d.request))
32
			.join(" ")}`;
33
	}
34
35
	build(options, compilation, resolver, fs, callback) {
36
		this.built = true;
37
		this.buildMeta = {};
38
		this.buildInfo = {};
39
		return callback();
40
	}
41
42
	needRebuild() {
43
		return false;
44
	}
45
46
	size() {
47
		return 16 + this.dependencies.length * 12;
48
	}
49
50
	/**
51
	 * @param {Hash} hash the hash used to track dependencies
52
	 * @returns {void}
53
	 */
54
	updateHash(hash) {
55
		hash.update("multi module");
56
		hash.update(this.name || "");
57
		super.updateHash(hash);
58
	}
59
60
	source(dependencyTemplates, runtimeTemplate) {
61
		const str = [];
62
		let idx = 0;
63
		for (const dep of this.dependencies) {
64
			if (dep.module) {
65
				if (idx === this.dependencies.length - 1) {
66
					str.push("module.exports = ");
67
				}
68
				str.push("__webpack_require__(");
69
				if (runtimeTemplate.outputOptions.pathinfo) {
70
					str.push(Template.toComment(dep.request));
71
				}
72
				str.push(`${JSON.stringify(dep.module.id)}`);
73
				str.push(")");
74
			} else {
75
				const content = require("./dependencies/WebpackMissingModule").module(
76
					dep.request
77
				);
78
				str.push(content);
79
			}
80
			str.push(";\n");
81
			idx++;
82
		}
83
		return new RawSource(str.join(""));
84
	}
85
}
86
87
module.exports = MultiModule;