File size: 925 Bytes
7aec436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Plugin to modify webpack to interpret all dynamic imports as webpackMode: "eager"

const patchParser = (parser) => {
  const originalParseCommentOptions = parser.parseCommentOptions;
  parser.parseCommentOptions = function (...args) {
    const result = originalParseCommentOptions.call(this, ...args);
    result.options.webpackMode = 'eager';
    return result;
  };
};

const PLUGIN_NAME = 'EagerDynamicImportPlugin';

class EagerDynamicImportPlugin {
  apply (compiler) {
    compiler.hooks.normalModuleFactory.tap(PLUGIN_NAME, (normalModuleFactory) => {
      normalModuleFactory.hooks.parser.for('javascript/auto').tap(PLUGIN_NAME, patchParser);
      normalModuleFactory.hooks.parser.for('javascript/dynamic').tap(PLUGIN_NAME, patchParser);
      normalModuleFactory.hooks.parser.for('javascript/esm').tap(PLUGIN_NAME, patchParser);
    });
  }
}

module.exports = EagerDynamicImportPlugin;