55
66"use strict" ;
77
8+ const { CSS_TYPE } = require ( "../ModuleSourceTypeConstants" ) ;
89const makeSerializable = require ( "../util/makeSerializable" ) ;
910const HarmonyImportDependency = require ( "./HarmonyImportDependency" ) ;
1011
@@ -61,6 +62,14 @@ makeSerializable(
6162 "webpack/lib/dependencies/HarmonyImportSideEffectDependency"
6263) ;
6364
65+ /**
66+ * @param {string[] } sourceTypes the source type of referencing module
67+ * @returns {boolean } returns if need to render executing js code
68+ */
69+ function noNeedJs ( sourceTypes ) {
70+ return sourceTypes . every ( ( sourceType ) => sourceType === CSS_TYPE ) ;
71+ }
72+
6473HarmonyImportSideEffectDependency . Template = class HarmonyImportSideEffectDependencyTemplate extends (
6574 HarmonyImportDependency . Template
6675) {
@@ -72,11 +81,16 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
7281 */
7382 apply ( dependency , source , templateContext ) {
7483 const { moduleGraph, concatenationScope } = templateContext ;
75- if ( concatenationScope ) {
76- const module = /** @type {Module } */ ( moduleGraph . getModule ( dependency ) ) ;
77- if ( concatenationScope . isModuleInScope ( module ) ) {
78- return ;
79- }
84+
85+ const module = /** @type {Module } */ ( moduleGraph . getModule ( dependency ) ) ;
86+
87+ if ( module && noNeedJs ( [ ...module . getSourceTypes ( ) ] ) ) {
88+ // no need to render import
89+ return ;
90+ }
91+
92+ if ( concatenationScope && concatenationScope . isModuleInScope ( module ) ) {
93+ return ;
8094 }
8195 super . apply ( dependency , source , templateContext ) ;
8296 }
0 commit comments