12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /*
- 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;
|