webpack/lib/dependencies/RequireContextDependencyPar...

35 lines
1.0 KiB
JavaScript
Raw Normal View History

2013-01-31 01:49:25 +08:00
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
var AbstractPlugin = require("../AbstractPlugin");
var RequireContextDependency = require("./RequireContextDependency");
module.exports = AbstractPlugin.create({
"call require.context": function(expr) {
var regExp = /^\.\/.*$/;
var recursive = true;
switch(expr.arguments.length) {
case 3:
var regExpExpr = this.evaluateExpression(expr.arguments[2]);
if(!regExpExpr.isRegExp()) return;
regExp = regExpExpr.regExp;
2015-04-24 05:55:50 +08:00
// falls through
2013-01-31 01:49:25 +08:00
case 2:
var recursiveExpr = this.evaluateExpression(expr.arguments[1]);
if(!recursiveExpr.isBoolean()) return;
recursive = recursiveExpr.bool;
2015-04-24 05:55:50 +08:00
// falls through
2013-01-31 01:49:25 +08:00
case 1:
var requestExpr = this.evaluateExpression(expr.arguments[0]);
if(!requestExpr.isString()) return;
var dep = new RequireContextDependency(requestExpr.string, recursive, regExp, expr.range);
dep.loc = expr.loc;
dep.optional = this.scope.inTry;
this.state.current.addDependency(dep);
return true;
}
}
});