SourceMapDevToolModuleOptionsPlugin.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. * @param {SourceMapDevToolPluginOptions} options options
  13. */
  14. constructor(options) {
  15. this.options = options;
  16. }
  17. /**
  18. * @param {Compilation} compilation the compiler instance
  19. * @returns {void}
  20. */
  21. apply(compilation) {
  22. const options = this.options;
  23. if (options.module !== false) {
  24. compilation.hooks.buildModule.tap(PLUGIN_NAME, module => {
  25. module.useSourceMap = true;
  26. });
  27. compilation.hooks.runtimeModule.tap(PLUGIN_NAME, module => {
  28. module.useSourceMap = true;
  29. });
  30. } else {
  31. compilation.hooks.buildModule.tap(PLUGIN_NAME, module => {
  32. module.useSimpleSourceMap = true;
  33. });
  34. compilation.hooks.runtimeModule.tap(PLUGIN_NAME, module => {
  35. module.useSimpleSourceMap = true;
  36. });
  37. }
  38. JavascriptModulesPlugin.getCompilationHooks(compilation).useSourceMap.tap(
  39. PLUGIN_NAME,
  40. () => true
  41. );
  42. }
  43. }
  44. module.exports = SourceMapDevToolModuleOptionsPlugin;