mirror of https://github.com/webpack/webpack.git
71 lines
1.9 KiB
JavaScript
71 lines
1.9 KiB
JavaScript
|
/*
|
||
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
||
|
Author Tobias Koppers @sokra
|
||
|
*/
|
||
|
var Module = require("./Module");
|
||
|
var OriginalSource = require("webpack-core/lib/OriginalSource");
|
||
|
var RawSource = require("webpack-core/lib/RawSource");
|
||
|
|
||
|
function ExternalModule(request, type) {
|
||
|
Module.call(this);
|
||
|
this.request = request;
|
||
|
this.type = type;
|
||
|
this.built = false;
|
||
|
}
|
||
|
module.exports = ExternalModule;
|
||
|
|
||
|
ExternalModule.prototype = Object.create(Module.prototype);
|
||
|
|
||
|
ExternalModule.prototype.external = true;
|
||
|
|
||
|
ExternalModule.prototype.identifier = function() {
|
||
|
return "external " + this.request;
|
||
|
};
|
||
|
|
||
|
ExternalModule.prototype.readableIdentifier = function(requestShortener) {
|
||
|
return "external " + this.request;
|
||
|
};
|
||
|
|
||
|
ExternalModule.prototype.needRebuild = function(fileTimestamps, contextTimestamps) {
|
||
|
return false;
|
||
|
};
|
||
|
|
||
|
ExternalModule.prototype.build = function(options, compilation, resolver, fs, callback) {
|
||
|
this.builtTime = new Date().getTime();
|
||
|
callback();
|
||
|
};
|
||
|
|
||
|
ExternalModule.prototype.source = function(dependencyTemplates, outputOptions, requestShortener) {
|
||
|
var str = "throw new Error('Externals not supported');";
|
||
|
var request = this.request;
|
||
|
switch(this.type) {
|
||
|
case "var":
|
||
|
str = "module.exports = " + request + ";";
|
||
|
break;
|
||
|
case "this":
|
||
|
str = "(function() { module.exports = this[" + JSON.stringify(request) + "]; }());";
|
||
|
break;
|
||
|
case "commonjs":
|
||
|
case "commonjs2":
|
||
|
if(Array.isArray(request)) {
|
||
|
str = "module.exports = require(" + JSON.stringify(request[0]) + ")" + request.slice(1).map(function(r) {
|
||
|
return "[" + JSON.stringify(r) + "]";
|
||
|
}).join("") + ";";
|
||
|
} else
|
||
|
str = "module.exports = require(" + JSON.stringify(request) + ");";
|
||
|
break;
|
||
|
case "amd":
|
||
|
case "umd":
|
||
|
str = "module.exports = __WEBPACK_EXTERNAL_MODULE_" + this.id + "__;";
|
||
|
break;
|
||
|
}
|
||
|
if(this.useSourceMap) {
|
||
|
return new OriginalSource(str, this.identifier());
|
||
|
} else {
|
||
|
return new RawSource(str);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
ExternalModule.prototype.size = function() {
|
||
|
return 42;
|
||
|
};
|