fixes #65
This commit is contained in:
parent
a0b4d5bd5c
commit
dc69f23de4
|
@ -9,6 +9,7 @@ var Parser = require("./Parser");
|
|||
var Dependency = require("./Dependency");
|
||||
var EntryModuleNotFoundError = require("./EntryModuleNotFoundError");
|
||||
var ModuleNotFoundError = require("./ModuleNotFoundError");
|
||||
var CriticalDependenciesWarning = require("./CriticalDependenciesWarning");
|
||||
var Module = require("./Module");
|
||||
var ArrayMap = require("./ArrayMap");
|
||||
var Chunk = require("./Chunk");
|
||||
|
@ -20,10 +21,9 @@ function Compilation(compiler) {
|
|||
this.mainTemplate = compiler.mainTemplate;
|
||||
this.chunkTemplate = compiler.chunkTemplate;
|
||||
this.moduleTemplate = compiler.moduleTemplate;
|
||||
this.options = compiler.options;
|
||||
this.resolvers = compiler.resolvers;
|
||||
this.inputFileSystem = compiler.inputFileSystem;
|
||||
var options = compiler.options;
|
||||
var options = this.options = compiler.options;
|
||||
this.outputOptions = options && options.output;
|
||||
this.bail = options && options.bail;
|
||||
this.entries = [];
|
||||
|
@ -116,6 +116,11 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
|
|||
}
|
||||
async.forEach(factories, function(item, callback) {
|
||||
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) {
|
||||
err.dependencies = dependencies;
|
||||
err.origin = module;
|
||||
|
@ -132,13 +137,13 @@ Compilation.prototype.processModuleDependencies = function(module, callback) {
|
|||
var factory = item[0];
|
||||
factory.create(module.context, dependencies[0], function(err, dependantModule) {
|
||||
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) {
|
||||
if(isOptional())
|
||||
return errorAndCallback(err);
|
||||
else
|
||||
return warningAndCallback(err);
|
||||
else
|
||||
return errorAndCallback(err);
|
||||
}
|
||||
if(err) return errorOrWarningAndCallback(new ModuleNotFoundError(module, err));
|
||||
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) {
|
||||
var dep = ContextDependencyHelpers.create(AMDRequireContextDependency, param.range, param);
|
||||
var dep = ContextDependencyHelpers.create(AMDRequireContextDependency, param.range, param, expr);
|
||||
if(!dep) return;
|
||||
dep.loc = expr.loc;
|
||||
dep.optional = !!this.scope.inTry;
|
||||
|
|
|
@ -50,7 +50,7 @@ module.exports = AbstractPlugin.create({
|
|||
}
|
||||
},
|
||||
"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;
|
||||
dep.loc = expr.loc;
|
||||
dep.optional = !!this.scope.inTry;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*/
|
||||
var ContextDependencyHelpers = exports;
|
||||
|
||||
ContextDependencyHelpers.create = function(Dep, range, param) {
|
||||
ContextDependencyHelpers.create = function(Dep, range, param, expr) {
|
||||
if(param.isWrapped() && param.prefix.isString()) {
|
||||
var prefix = param.prefix.string;
|
||||
var postfix = param.postfix.isString() ? param.postfix.string : "";
|
||||
|
@ -21,9 +21,13 @@ ContextDependencyHelpers.create = function(Dep, range, param) {
|
|||
".*" +
|
||||
postfix.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "$");
|
||||
var dep = new Dep(context, true, regExp, range, valueRange);
|
||||
dep.loc = expr.loc;
|
||||
dep.prepend = prefix;
|
||||
return dep;
|
||||
} 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