aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/LoaderPlugin.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/webpack/lib/dependencies/LoaderPlugin.js
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
node_modules
Diffstat (limited to 'node_modules/webpack/lib/dependencies/LoaderPlugin.js')
-rw-r--r--node_modules/webpack/lib/dependencies/LoaderPlugin.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/dependencies/LoaderPlugin.js b/node_modules/webpack/lib/dependencies/LoaderPlugin.js
new file mode 100644
index 000000000..a565ebbc4
--- /dev/null
+++ b/node_modules/webpack/lib/dependencies/LoaderPlugin.js
@@ -0,0 +1,60 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const LoaderDependency = require("./LoaderDependency");
+
+class LoaderPlugin {
+
+ apply(compiler) {
+ compiler.plugin("compilation", (compilation, params) => {
+ const normalModuleFactory = params.normalModuleFactory;
+
+ compilation.dependencyFactories.set(LoaderDependency, normalModuleFactory);
+ });
+ compiler.plugin("compilation", (compilation) => {
+ compilation.plugin("normal-module-loader", (loaderContext, module) => {
+ loaderContext.loadModule = function loadModule(request, callback) {
+ const dep = new LoaderDependency(request);
+ dep.loc = request;
+ compilation.addModuleDependencies(module, [
+ [dep]
+ ], true, "lm", false, (err) => {
+ if(err) return callback(err);
+
+ if(!dep.module) return callback(new Error("Cannot load the module"));
+ if(dep.module.building) dep.module.building.push(next);
+ else next();
+
+ function next(err) {
+ if(err) return callback(err);
+
+ if(dep.module.error) return callback(dep.module.error);
+ if(!dep.module._source) throw new Error("The module created for a LoaderDependency must have a property _source");
+ let source, map;
+ const moduleSource = dep.module._source;
+ if(moduleSource.sourceAndMap) {
+ const sourceAndMap = moduleSource.sourceAndMap();
+ map = sourceAndMap.map;
+ source = sourceAndMap.source;
+ } else {
+ map = moduleSource.map();
+ source = moduleSource.source();
+ }
+ if(dep.module.fileDependencies) {
+ dep.module.fileDependencies.forEach((dep) => loaderContext.addDependency(dep));
+ }
+ if(dep.module.contextDependencies) {
+ dep.module.contextDependencies.forEach((dep) => loaderContext.addContextDependency(dep));
+ }
+ return callback(null, source, map, dep.module);
+ }
+ });
+ };
+ });
+ });
+ }
+}
+module.exports = LoaderPlugin;