diff options
Diffstat (limited to 'node_modules/webpack/lib/schemes/FileUriPlugin.js')
| -rw-r--r-- | node_modules/webpack/lib/schemes/FileUriPlugin.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/schemes/FileUriPlugin.js b/node_modules/webpack/lib/schemes/FileUriPlugin.js new file mode 100644 index 00000000..453abbd3 --- /dev/null +++ b/node_modules/webpack/lib/schemes/FileUriPlugin.js @@ -0,0 +1,49 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const { URL, fileURLToPath } = require("url"); +const { NormalModule } = require(".."); + +/** @typedef {import("../Compiler")} Compiler */ + +class FileUriPlugin { + /** + * Apply the plugin + * @param {Compiler} compiler the compiler instance + * @returns {void} + */ + apply(compiler) { + compiler.hooks.compilation.tap( + "FileUriPlugin", + (compilation, { normalModuleFactory }) => { + normalModuleFactory.hooks.resolveForScheme + .for("file") + .tap("FileUriPlugin", resourceData => { + const url = new URL(resourceData.resource); + const path = fileURLToPath(url); + const query = url.search; + const fragment = url.hash; + resourceData.path = path; + resourceData.query = query; + resourceData.fragment = fragment; + resourceData.resource = path + query + fragment; + return true; + }); + const hooks = NormalModule.getCompilationHooks(compilation); + hooks.readResource + .for(undefined) + .tapAsync("FileUriPlugin", (loaderContext, callback) => { + const { resourcePath } = loaderContext; + loaderContext.addDependency(resourcePath); + loaderContext.fs.readFile(resourcePath, callback); + }); + } + ); + } +} + +module.exports = FileUriPlugin; |
