@@ -26,6 +26,8 @@ loaderApi.pitch = function loader(request) {
2626 const injectType = options . injectType || 'styleTag' ;
2727 const esModule =
2828 typeof options . esModule !== 'undefined' ? options . esModule : false ;
29+ const namedExport =
30+ esModule && options . modules && options . modules . namedExport ;
2931 const runtimeOptions = {
3032 injectType : options . injectType ,
3133 attributes : options . attributes ,
@@ -104,20 +106,22 @@ ${esModule ? 'export default {}' : ''}`;
104106if (module.hot) {
105107 if (!content.locals || module.hot.invalidate) {
106108 var isEqualLocals = ${ isEqualLocals . toString ( ) } ;
107- var oldLocals = content.locals;
109+ var oldLocals = ${ namedExport ? 'locals' : ' content.locals' } ;
108110
109111 module.hot.accept(
110112 ${ loaderUtils . stringifyRequest ( this , `!!${ request } ` ) } ,
111113 function () {
112114 ${
113115 esModule
114- ? `if (!isEqualLocals(oldLocals, content.locals)) {
116+ ? `if (!isEqualLocals(oldLocals, ${
117+ namedExport ? 'locals' : 'content.locals'
118+ } , ${ namedExport } )) {
115119 module.hot.invalidate();
116120
117121 return;
118122 }
119123
120- oldLocals = content.locals;
124+ oldLocals = ${ namedExport ? 'locals' : ' content.locals' } ;
121125
122126 if (update && refs > 0) {
123127 update(content);
@@ -159,10 +163,9 @@ if (module.hot) {
159163 this ,
160164 `!${ path . join ( __dirname , 'runtime/injectStylesIntoStyleTag.js' ) } `
161165 ) } ;
162- import content from ${ loaderUtils . stringifyRequest (
163- this ,
164- `!!${ request } `
165- ) } ;`
166+ import content${
167+ namedExport ? ', * as locals' : ''
168+ } from ${ loaderUtils . stringifyRequest ( this , `!!${ request } ` ) } ;`
166169 : `var api = require(${ loaderUtils . stringifyRequest (
167170 this ,
168171 `!${ path . join ( __dirname , 'runtime/injectStylesIntoStyleTag.js' ) } `
@@ -188,7 +191,7 @@ options.singleton = ${isSingleton};
188191
189192var exported = {};
190193
191- exported.locals = content.locals || {};
194+ ${ namedExport ? '' : ' exported.locals = content.locals || {};' }
192195exported.use = function() {
193196 if (!(refs++)) {
194197 update = api(content, options);
@@ -205,7 +208,20 @@ exported.unuse = function() {
205208
206209${ hmrCode }
207210
208- ${ esModule ? 'export default' : 'module.exports =' } exported;`;
211+ ${
212+ esModule
213+ ? `${
214+ namedExport
215+ ? `export * from ${ loaderUtils . stringifyRequest (
216+ this ,
217+ `!!${ request } `
218+ ) } ;`
219+ : ''
220+ } ;
221+ export default exported;`
222+ : 'module.exports = exported;'
223+ }
224+ ` ;
209225 }
210226
211227 case 'styleTag' :
@@ -218,20 +234,22 @@ ${esModule ? 'export default' : 'module.exports ='} exported;`;
218234if (module.hot) {
219235 if (!content.locals || module.hot.invalidate) {
220236 var isEqualLocals = ${ isEqualLocals . toString ( ) } ;
221- var oldLocals = content.locals;
237+ var oldLocals = ${ namedExport ? 'locals' : ' content.locals' } ;
222238
223239 module.hot.accept(
224240 ${ loaderUtils . stringifyRequest ( this , `!!${ request } ` ) } ,
225241 function () {
226242 ${
227243 esModule
228- ? `if (!isEqualLocals(oldLocals, content.locals)) {
244+ ? `if (!isEqualLocals(oldLocals, ${
245+ namedExport ? 'locals' : 'content.locals'
246+ } , ${ namedExport } )) {
229247 module.hot.invalidate();
230248
231249 return;
232250 }
233251
234- oldLocals = content.locals;
252+ oldLocals = ${ namedExport ? 'locals' : ' content.locals' } ;
235253
236254 update(content);`
237255 : `content = require(${ loaderUtils . stringifyRequest (
@@ -271,10 +289,9 @@ if (module.hot) {
271289 this ,
272290 `!${ path . join ( __dirname , 'runtime/injectStylesIntoStyleTag.js' ) } `
273291 ) } ;
274- import content from ${ loaderUtils . stringifyRequest (
275- this ,
276- `!!${ request } `
277- ) } ;`
292+ import content${
293+ namedExport ? ', * as locals' : ''
294+ } from ${ loaderUtils . stringifyRequest ( this , `!!${ request } ` ) } ;`
278295 : `var api = require(${ loaderUtils . stringifyRequest (
279296 this ,
280297 `!${ path . join ( __dirname , 'runtime/injectStylesIntoStyleTag.js' ) } `
@@ -300,7 +317,13 @@ var update = api(content, options);
300317
301318${ hmrCode }
302319
303- ${ esModule ? 'export default' : 'module.exports =' } content.locals || {};`;
320+ ${
321+ esModule
322+ ? namedExport
323+ ? `export * from ${ loaderUtils . stringifyRequest ( this , `!!${ request } ` ) } ;`
324+ : 'export default content.locals || {};'
325+ : 'module.exports = content.locals || {};'
326+ } `;
304327 }
305328 }
306329} ;
0 commit comments