SourceMapDevToolModuleOptionsPlugin.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
  7. /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
  8. /** @typedef {import("./Compilation")} Compilation */
  9. const PLUGIN_NAME = "SourceMapDevToolModuleOptionsPlugin";
  10. class SourceMapDevToolModuleOptionsPlugin {
  11. /**
  12. * Creates an instance of SourceMapDevToolModuleOptionsPlugin.
  13. * @param {SourceMapDevToolPluginOptions=} options options
  14. */
  15. constructor(options = {}) {
  16. /** @type {SourceMapDevToolPluginOptions} */
  17. this.options = options;
  18. }
  19. /**
  20. * Applies the plugin by registering its hooks on the compiler.
  21. * @param {Compilation} compilation the compiler instance
  22. * @returns {void}
  23. */
  24. apply(compilation) {
  25. const options = this.options;
  26. if (options.module !== false) {
  27. compilation.hooks.buildModule.tap(PLUGIN_NAME, (module) => {
  28. module.useSourceMap = true;
  29. });
  30. compilation.hooks.runtimeModule.tap(PLUGIN_NAME, (module) => {
  31. module.useSourceMap = true;
  32. });
  33. } else {
  34. compilation.hooks.buildModule.tap(PLUGIN_NAME, (module) => {
  35. module.useSimpleSourceMap = true;
  36. });
  37. compilation.hooks.runtimeModule.tap(PLUGIN_NAME, (module) => {
  38. module.useSimpleSourceMap = true;
  39. });
  40. }
  41. JavascriptModulesPlugin.getCompilationHooks(compilation).useSourceMap.tap(
  42. PLUGIN_NAME,
  43. () => true
  44. );
  45. }
  46. }
  47. module.exports = SourceMapDevToolModuleOptionsPlugin;