mirror of https://github.com/webpack/webpack.git
fixes #65
This commit is contained in:
parent
a0b4d5bd5c
commit
dc69f23de4
|
@ -9,6 +9,7 @@ var Parser = require("./Parser");
|
||||||
var Dependency = require("./Dependency");
|
var Dependency = require("./Dependency");
|
||||||
var EntryModuleNotFoundError = require("./EntryModuleNotFoundError");
|
var EntryModuleNotFoundError = require("./EntryModuleNotFoundError");
|
||||||
var ModuleNotFoundError = require("./ModuleNotFoundError");
|
var ModuleNotFoundError = require("./ModuleNotFoundError");
|
||||||
|
var CriticalDependenciesWarning = require("./CriticalDependenciesWarning");
|
||||||
var Module = require("./Module");
|
var Module = require("./Module");
|
||||||
var ArrayMap = require("./ArrayMap");
|
var ArrayMap = require("./ArrayMap");
|
||||||
var Chunk = require("./Chunk");
|
var Chunk = require("./Chunk");
|
||||||
|
@ -20,10 +21,9 @@ function Compilation(compiler) {
|
||||||
this.mainTemplate = compiler.mainTemplate;
|
this.mainTemplate = compiler.mainTemplate;
|
||||||
this.chunkTemplate = compiler.chunkTemplate;
|
this.chunkTemplate = compiler.chunkTemplate;
|
||||||
this.moduleTemplate = compiler.moduleTemplate;
|
this.moduleTemplate = compiler.moduleTemplate;
|
||||||
this.options = compiler.options;
|
|
||||||
this.resolvers = compiler.resolvers;
|
this.resolvers = compiler.resolvers;
|
||||||
this.inputFileSystem = compiler.inputFileSystem;
|
this.inputFileSystem = compiler.inputFileSystem;
|
||||||
var options = compiler.options;
|
var options = this.options = compiler.options;
|
||||||
this.outputOptions = options && options.output;
|
this.outputOptions = options && options.output;
|
||||||
this.bail = options && options.bail;
|
this.bail = options && options.bail;
|
||||||
this.entries = [];
|
this.entries = [];
|
||||||
|
@ -116,6 +116,11 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
|
||||||
}
|
}
|
||||||
async.forEach(factories, function(item, callback) {
|
async.forEach(factories, function(item, callback) {
|
||||||
var dependencies = item[1];
|
var dependencies = item[1];
|
||||||
|
var criticalDependencies = dependencies.filter(function(d) { return !!d.critical });
|
||||||
|
if(criticalDependencies.length > 0) {
|
||||||
|
this.warnings.push(new CriticalDependenciesWarning(module, criticalDependencies));
|
||||||
|
}
|
||||||
|
|
||||||
var errorAndCallback = function errorAndCallback(err) {
|
var errorAndCallback = function errorAndCallback(err) {
|
||||||
err.dependencies = dependencies;
|
err.dependencies = dependencies;
|
||||||
err.origin = module;
|
err.origin = module;
|
||||||
|
@ -132,13 +137,13 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
|
||||||
var factory = item[0];
|
var factory = item[0];
|
||||||
factory.create(module.context, dependencies[0], function(err, dependantModule) {
|
factory.create(module.context, dependencies[0], function(err, dependantModule) {
|
||||||
function isOptional() {
|
function isOptional() {
|
||||||
return dependencies.filter(function(d) { return !d.optional }).length > 0;
|
return dependencies.filter(function(d) { return !d.optional }).length == 0;
|
||||||
}
|
}
|
||||||
function errorOrWarningAndCallback(err) {
|
function errorOrWarningAndCallback(err) {
|
||||||
if(isOptional())
|
if(isOptional())
|
||||||
return errorAndCallback(err);
|
|
||||||
else
|
|
||||||
return warningAndCallback(err);
|
return warningAndCallback(err);
|
||||||
|
else
|
||||||
|
return errorAndCallback(err);
|
||||||
}
|
}
|
||||||
if(err) return errorOrWarningAndCallback(new ModuleNotFoundError(module, err));
|
if(err) return errorOrWarningAndCallback(new ModuleNotFoundError(module, err));
|
||||||
if(!dependantModule) return callback();
|
if(!dependantModule) return callback();
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||||
|
Author Tobias Koppers @sokra
|
||||||
|
*/
|
||||||
|
function CriticalDependenciesWarning(module, dependencies) {
|
||||||
|
Error.call(this);
|
||||||
|
Error.captureStackTrace(this, CriticalDependenciesWarning);
|
||||||
|
this.name = "CriticalDependenciesWarning";
|
||||||
|
this.message = "Critical dependencies.";
|
||||||
|
this.dependencies = dependencies;
|
||||||
|
this.origin = this.module = module;
|
||||||
|
}
|
||||||
|
module.exports = CriticalDependenciesWarning;
|
||||||
|
|
||||||
|
CriticalDependenciesWarning.prototype = Object.create(Error.prototype);
|
|
@ -111,7 +111,7 @@ module.exports = AbstractPlugin.create({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"call require:amd:context": function(expr, param) {
|
"call require:amd:context": function(expr, param) {
|
||||||
var dep = ContextDependencyHelpers.create(AMDRequireContextDependency, param.range, param);
|
var dep = ContextDependencyHelpers.create(AMDRequireContextDependency, param.range, param, expr);
|
||||||
if(!dep) return;
|
if(!dep) return;
|
||||||
dep.loc = expr.loc;
|
dep.loc = expr.loc;
|
||||||
dep.optional = !!this.scope.inTry;
|
dep.optional = !!this.scope.inTry;
|
||||||
|
|
|
@ -50,7 +50,7 @@ module.exports = AbstractPlugin.create({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"call require:commonjs:context": function(expr, param) {
|
"call require:commonjs:context": function(expr, param) {
|
||||||
var dep = ContextDependencyHelpers.create(CommonJsRequireContextDependency, expr.range, param);
|
var dep = ContextDependencyHelpers.create(CommonJsRequireContextDependency, expr.range, param, expr);
|
||||||
if(!dep) return;
|
if(!dep) return;
|
||||||
dep.loc = expr.loc;
|
dep.loc = expr.loc;
|
||||||
dep.optional = !!this.scope.inTry;
|
dep.optional = !!this.scope.inTry;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
var ContextDependencyHelpers = exports;
|
var ContextDependencyHelpers = exports;
|
||||||
|
|
||||||
ContextDependencyHelpers.create = function(Dep, range, param) {
|
ContextDependencyHelpers.create = function(Dep, range, param, expr) {
|
||||||
if(param.isWrapped() && param.prefix.isString()) {
|
if(param.isWrapped() && param.prefix.isString()) {
|
||||||
var prefix = param.prefix.string;
|
var prefix = param.prefix.string;
|
||||||
var postfix = param.postfix.isString() ? param.postfix.string : "";
|
var postfix = param.postfix.isString() ? param.postfix.string : "";
|
||||||
|
@ -21,9 +21,13 @@ ContextDependencyHelpers.create = function(Dep, range, param) {
|
||||||
".*" +
|
".*" +
|
||||||
postfix.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "$");
|
postfix.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "$");
|
||||||
var dep = new Dep(context, true, regExp, range, valueRange);
|
var dep = new Dep(context, true, regExp, range, valueRange);
|
||||||
|
dep.loc = expr.loc;
|
||||||
dep.prepend = prefix;
|
dep.prepend = prefix;
|
||||||
return dep;
|
return dep;
|
||||||
} else {
|
} else {
|
||||||
return new Dep(".", true, /^\.\/.*$/, range, param.range);
|
var dep = new Dep(".", true, /^\.\/.*$/, range, param.range);
|
||||||
|
dep.loc = expr.loc;
|
||||||
|
dep.critical = true;
|
||||||
|
return dep;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue