Blame view

node_modules/webpack/lib/dependencies/RequireContextDependencyParserPlugin.js 1.39 KB
2a09d1a4   liuqimichale   添加宜春 天水 宣化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  /*
  	MIT License http://www.opensource.org/licenses/mit-license.php
  	Author Tobias Koppers @sokra
  */
  "use strict";
  
  const RequireContextDependency = require("./RequireContextDependency");
  
  module.exports = class RequireContextDependencyParserPlugin {
  	apply(parser) {
  		parser.plugin("call require.context", expr => {
  			let regExp = /^\.\/.*$/;
  			let recursive = true;
  			let asyncMode;
  			switch(expr.arguments.length) {
  				case 4:
  					{
  						const asyncModeExpr = parser.evaluateExpression(expr.arguments[3]);
  						if(!asyncModeExpr.isString()) return;
  						asyncMode = asyncModeExpr.string;
  					}
  					// falls through
  				case 3:
  					{
  						const regExpExpr = parser.evaluateExpression(expr.arguments[2]);
  						if(!regExpExpr.isRegExp()) return;
  						regExp = regExpExpr.regExp;
  					}
  					// falls through
  				case 2:
  					{
  						const recursiveExpr = parser.evaluateExpression(expr.arguments[1]);
  						if(!recursiveExpr.isBoolean()) return;
  						recursive = recursiveExpr.bool;
  					}
  					// falls through
  				case 1:
  					{
  						const requestExpr = parser.evaluateExpression(expr.arguments[0]);
  						if(!requestExpr.isString()) return;
  						const dep = new RequireContextDependency(requestExpr.string, recursive, regExp, asyncMode, expr.range);
  						dep.loc = expr.loc;
  						dep.optional = parser.scope.inTry;
  						parser.state.current.addDependency(dep);
  						return true;
  					}
  			}
  		});
  	}
  };