Blame view

node_modules/webpack/lib/MultiModule.js 1.68 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  /*
  	MIT License http://www.opensource.org/licenses/mit-license.php
  	Author Tobias Koppers @sokra
  */
  "use strict";
  
  const Module = require("./Module");
  const RawSource = require("webpack-sources").RawSource;
  
  class MultiModule extends Module {
  
  	constructor(context, dependencies, name) {
  		super();
  		this.context = context;
  		this.dependencies = dependencies;
  		this.name = name;
  		this.built = false;
  		this.cacheable = true;
  	}
  
  	identifier() {
  		return `multi ${this.dependencies.map((d) => d.request).join(" ")}`;
  	}
  
  	readableIdentifier(requestShortener) {
  		return `multi ${this.dependencies.map((d) => requestShortener.shorten(d.request)).join(" ")}`;
  	}
  
  	disconnect() {
  		this.built = false;
  		super.disconnect();
  	}
  
  	build(options, compilation, resolver, fs, callback) {
  		this.built = true;
  		return callback();
  	}
  
  	needRebuild() {
  		return false;
  	}
  
  	size() {
  		return 16 + this.dependencies.length * 12;
  	}
  
  	updateHash(hash) {
  		hash.update("multi module");
  		hash.update(this.name || "");
  		super.updateHash(hash);
  	}
  
  	source(dependencyTemplates, outputOptions) {
  		const str = [];
  		this.dependencies.forEach(function(dep, idx) {
  			if(dep.module) {
  				if(idx === this.dependencies.length - 1)
  					str.push("module.exports = ");
  				str.push("__webpack_require__(");
  				if(outputOptions.pathinfo)
  					str.push(`/*! ${dep.request} */`);
  				str.push(`${JSON.stringify(dep.module.id)}`);
  				str.push(")");
  			} else {
  				str.push("(function webpackMissingModule() { throw new Error(");
  				str.push(JSON.stringify(`Cannot find module "${dep.request}"`));
  				str.push("); }())");
  			}
  			str.push(";\n");
  		}, this);
  		return new RawSource(str.join(""));
  	}
  }
  
  module.exports = MultiModule;