RequireIncludePlugin.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const {
  7. JAVASCRIPT_MODULE_TYPE_AUTO,
  8. JAVASCRIPT_MODULE_TYPE_DYNAMIC
  9. } = require("../ModuleTypeConstants");
  10. const RequireIncludeDependency = require("./RequireIncludeDependency");
  11. const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
  12. const PLUGIN_NAME = "RequireIncludePlugin";
  13. class RequireIncludePlugin {
  14. apply(compiler) {
  15. compiler.hooks.compilation.tap(
  16. PLUGIN_NAME,
  17. (compilation, { normalModuleFactory }) => {
  18. compilation.dependencyFactories.set(
  19. RequireIncludeDependency,
  20. normalModuleFactory
  21. );
  22. compilation.dependencyTemplates.set(
  23. RequireIncludeDependency,
  24. new RequireIncludeDependency.Template()
  25. );
  26. const handler = (parser, parserOptions) => {
  27. if (parserOptions.requireInclude === false) return;
  28. const warn = parserOptions.requireInclude === undefined;
  29. new RequireIncludeDependencyParserPlugin(warn).apply(parser);
  30. };
  31. normalModuleFactory.hooks.parser
  32. .for(JAVASCRIPT_MODULE_TYPE_AUTO)
  33. .tap(PLUGIN_NAME, handler);
  34. normalModuleFactory.hooks.parser
  35. .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
  36. .tap(PLUGIN_NAME, handler);
  37. }
  38. );
  39. }
  40. }
  41. module.exports = RequireIncludePlugin;