UNPKG

922 BJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5
6"use strict";
7
8const NormalModule = require("../NormalModule");
9const { getMimetype, decodeDataURI } = require("../util/DataURI");
10
11/** @typedef {import("../Compiler")} Compiler */
12
13class DataUriPlugin {
14 /**
15 * Apply the plugin
16 * @param {Compiler} compiler the compiler instance
17 * @returns {void}
18 */
19 apply(compiler) {
20 compiler.hooks.compilation.tap(
21 "DataUriPlugin",
22 (compilation, { normalModuleFactory }) => {
23 normalModuleFactory.hooks.resolveForScheme
24 .for("data")
25 .tap("DataUriPlugin", resourceData => {
26 resourceData.data.mimetype = getMimetype(resourceData.resource);
27 });
28 NormalModule.getCompilationHooks(compilation)
29 .readResourceForScheme.for("data")
30 .tap("DataUriPlugin", resource => decodeDataURI(resource));
31 }
32 );
33 }
34}
35
36module.exports = DataUriPlugin;