5
5
6
6
"use strict" ;
7
7
8
- const { SyncBailHook } = require ( "tapable" ) ;
9
8
const { ConcatSource } = require ( "webpack-sources" ) ;
10
- const Compilation = require ( "./Compilation" ) ;
11
9
const HotUpdateChunk = require ( "./HotUpdateChunk" ) ;
12
10
const JavascriptGenerator = require ( "./JavascriptGenerator" ) ;
13
11
const JavascriptParser = require ( "./JavascriptParser" ) ;
@@ -18,41 +16,14 @@ const createHash = require("./util/createHash");
18
16
/** @typedef {import("webpack-sources").Source } Source */
19
17
/** @typedef {import("./Chunk") } Chunk */
20
18
/** @typedef {import("./ChunkTemplate") } ChunkTemplate */
19
+ /** @typedef {import("./Compilation") } Compilation */
21
20
/** @typedef {import("./Compiler") } Compiler */
22
21
/** @typedef {import("./Module") } Module */
23
22
/** @typedef {import("./ModuleTemplate") } ModuleTemplate */
24
23
/** @typedef {import("./ModuleTemplate").RenderContext } RenderContext */
25
24
/** @typedef {import("./RuntimeTemplate") } RuntimeTemplate */
26
25
27
- /**
28
- * @typedef {Object } JavascriptModulesPluginHooks
29
- * @property {SyncBailHook<Module, Chunk> } shouldRender
30
- */
31
-
32
- /** @type {WeakMap<Compilation, JavascriptModulesPluginHooks> } */
33
- const compilationHooksMap = new WeakMap ( ) ;
34
-
35
26
class JavascriptModulesPlugin {
36
- /**
37
- * @param {Compilation } compilation the compilation
38
- * @returns {JavascriptModulesPluginHooks } hooks
39
- */
40
- static getHooks ( compilation ) {
41
- if ( ! ( compilation instanceof Compilation ) ) {
42
- throw new TypeError (
43
- "The 'compilation' argument must be an instance of Compilation"
44
- ) ;
45
- }
46
- let hooks = compilationHooksMap . get ( compilation ) ;
47
- if ( hooks === undefined ) {
48
- hooks = {
49
- shouldRender : new SyncBailHook ( [ "module" , "chunk" ] )
50
- } ;
51
- compilationHooksMap . set ( compilation , hooks ) ;
52
- }
53
- return hooks ;
54
- }
55
-
56
27
/**
57
28
* @param {Compiler } compiler webpack compiler
58
29
* @returns {void }
@@ -62,12 +33,6 @@ class JavascriptModulesPlugin {
62
33
"JavascriptModulesPlugin" ,
63
34
( compilation , { normalModuleFactory } ) => {
64
35
const moduleGraph = compilation . moduleGraph ;
65
- const hooks = JavascriptModulesPlugin . getHooks ( compilation ) ;
66
- hooks . shouldRender . tap ( "JavascriptModulesPlugin" , module => {
67
- if ( module . type === "javascript/auto" ) return true ;
68
- if ( module . type === "javascript/dynamic" ) return true ;
69
- if ( module . type === "javascript/esm" ) return true ;
70
- } ) ;
71
36
normalModuleFactory . hooks . createParser
72
37
. for ( "javascript/auto" )
73
38
. tap ( "JavascriptModulesPlugin" , options => {
@@ -134,10 +99,9 @@ class JavascriptModulesPlugin {
134
99
compilation . mainTemplate . hooks . modules . tap (
135
100
"JavascriptModulesPlugin" ,
136
101
( source , moduleTemplate , renderContext ) => {
137
- const chunk = renderContext . chunk ;
138
102
return Template . renderChunkModules (
139
103
renderContext ,
140
- m => hooks . shouldRender . call ( m , chunk ) ,
104
+ m => m . getSourceTypes ( ) . has ( "javascript" ) ,
141
105
moduleTemplate ,
142
106
"/******/ "
143
107
) ;
@@ -220,7 +184,7 @@ class JavascriptModulesPlugin {
220
184
chunk ,
221
185
compareModulesById ( chunkGraph )
222
186
) ) {
223
- if ( hooks . shouldRender . call ( m , chunk ) ) {
187
+ if ( m . getSourceTypes ( ) . has ( "javascript" ) ) {
224
188
hash . update ( chunkGraph . getModuleHash ( m ) ) ;
225
189
}
226
190
}
@@ -243,12 +207,10 @@ class JavascriptModulesPlugin {
243
207
* @returns {Source } the rendered source
244
208
*/
245
209
renderJavascript ( compilation , chunkTemplate , moduleTemplate , renderContext ) {
246
- const hooks = JavascriptModulesPlugin . getHooks ( compilation ) ;
247
-
248
210
const chunk = renderContext . chunk ;
249
211
const moduleSources = Template . renderChunkModules (
250
212
renderContext ,
251
- m => hooks . shouldRender . call ( m , chunk ) ,
213
+ m => m . getSourceTypes ( ) . has ( "javascript" ) ,
252
214
moduleTemplate
253
215
) ;
254
216
const core = chunkTemplate . hooks . modules . call (
0 commit comments