diff options
Diffstat (limited to 'node_modules/webpack/lib/dependencies/RequireContextPlugin.js')
-rw-r--r-- | node_modules/webpack/lib/dependencies/RequireContextPlugin.js | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/node_modules/webpack/lib/dependencies/RequireContextPlugin.js b/node_modules/webpack/lib/dependencies/RequireContextPlugin.js index 57acda586..3e08729d3 100644 --- a/node_modules/webpack/lib/dependencies/RequireContextPlugin.js +++ b/node_modules/webpack/lib/dependencies/RequireContextPlugin.js @@ -10,18 +10,17 @@ const ContextElementDependency = require("./ContextElementDependency"); const RequireContextDependencyParserPlugin = require("./RequireContextDependencyParserPlugin");
class RequireContextPlugin {
- constructor(modulesDirectories, extensions) {
+ constructor(modulesDirectories, extensions, mainFiles) {
if(!Array.isArray(modulesDirectories))
throw new Error("modulesDirectories must be an array");
if(!Array.isArray(extensions))
throw new Error("extensions must be an array");
this.modulesDirectories = modulesDirectories;
this.extensions = extensions;
+ this.mainFiles = mainFiles;
}
apply(compiler) {
- const modulesDirectories = this.modulesDirectories;
- const extensions = this.extensions;
compiler.plugin("compilation", (compilation, params) => {
const contextModuleFactory = params.contextModuleFactory;
const normalModuleFactory = params.normalModuleFactory;
@@ -43,7 +42,7 @@ class RequireContextPlugin { if(items.length === 0) return callback(null, items);
callback(null, items.map((obj) => {
- return extensions.filter((ext) => {
+ return this.extensions.filter((ext) => {
const l = obj.request.length;
return l > ext.length && obj.request.substr(l - ext.length, l) === ext;
}).map((ext) => {
@@ -60,8 +59,28 @@ class RequireContextPlugin { if(items.length === 0) return callback(null, items);
callback(null, items.map((obj) => {
- for(let i = 0; i < modulesDirectories.length; i++) {
- const dir = modulesDirectories[i];
+ return this.mainFiles.filter((mainFile) => {
+ const l = obj.request.length;
+ return l > mainFile.length + 1 && obj.request.substr(l - mainFile.length - 1, l) === "/" + mainFile;
+ }).map((mainFile) => {
+ const l = obj.request.length;
+ return [{
+ context: obj.context,
+ request: obj.request.substr(0, l - mainFile.length)
+ }, {
+ context: obj.context,
+ request: obj.request.substr(0, l - mainFile.length - 1)
+ }];
+ }).reduce((a, b) => a.concat(b), []).concat(obj);
+ }).reduce((a, b) => a.concat(b), []));
+ });
+
+ params.contextModuleFactory.plugin("alternatives", (items, callback) => {
+ if(items.length === 0) return callback(null, items);
+
+ callback(null, items.map((obj) => {
+ for(let i = 0; i < this.modulesDirectories.length; i++) {
+ const dir = this.modulesDirectories[i];
const idx = obj.request.indexOf("./" + dir + "/");
if(idx === 0) {
obj.request = obj.request.slice(dir.length + 3);
|