SourceMapDevToolModuleOptionsPlugin.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. /**
  8. * @import {
  9. * SourceMapDevToolPluginOptions
  10. * } from "../declarations/plugins/SourceMapDevToolPlugin"
  11. */
  12. /** @import Compilation from "./Compilation" */
  13. const PLUGIN_NAME = "SourceMapDevToolModuleOptionsPlugin";
  14. class SourceMapDevToolModuleOptionsPlugin {
  15. /**
  16. * Creates an instance of SourceMapDevToolModuleOptionsPlugin.
  17. * @param {SourceMapDevToolPluginOptions=} options options
  18. */
  19. constructor(options = {}) {
  20. /** @type {SourceMapDevToolPluginOptions} */
  21. this.options = options;
  22. }
  23. /**
  24. * Applies the plugin by registering its hooks on the compiler.
  25. * @param {Compilation} compilation the compiler instance
  26. * @returns {void}
  27. */
  28. apply(compilation) {
  29. const options = this.options;
  30. if (options.module !== false) {
  31. compilation.hooks.buildModule.tap(PLUGIN_NAME, (module) => {
  32. module.useSourceMap = true;
  33. });
  34. compilation.hooks.runtimeModule.tap(PLUGIN_NAME, (module) => {
  35. module.useSourceMap = true;
  36. });
  37. } else {
  38. compilation.hooks.buildModule.tap(PLUGIN_NAME, (module) => {
  39. module.useSimpleSourceMap = true;
  40. });
  41. compilation.hooks.runtimeModule.tap(PLUGIN_NAME, (module) => {
  42. module.useSimpleSourceMap = true;
  43. });
  44. }
  45. JavascriptModulesPlugin.getCompilationHooks(compilation).useSourceMap.tap(
  46. PLUGIN_NAME,
  47. () => true
  48. );
  49. }
  50. }
  51. module.exports = SourceMapDevToolModuleOptionsPlugin;