1
1
'use strict'
2
2
3
+ const path = require ( 'path' )
3
4
const split = require ( 'css-split' )
4
5
const { RawSource } = require ( 'webpack-sources' )
5
6
const { interpolateName } = require ( 'loader-utils' )
@@ -25,7 +26,7 @@ const strip = (str) => str.replace(/\/$/, '')
25
26
* @param {String } input Name to be interpolated.
26
27
* @returns {Function } Function to do the interpolating.
27
28
*/
28
- const nameInterpolator = ( input ) => ( { file, content, index} ) => {
29
+ const nameInterpolator = ( input ) => ( { file, content, index } ) => {
29
30
const res = interpolateName ( {
30
31
context : '/' ,
31
32
resourcePath : `/${ file } `
@@ -51,7 +52,7 @@ const normalizeImports = (input, preserve) => {
51
52
if ( preserve ) {
52
53
return nameInterpolator ( '[name]-split.[ext]' )
53
54
}
54
- return ( { file} ) => file
55
+ return ( { file } ) => file
55
56
}
56
57
return ( ) => false
57
58
default :
@@ -102,6 +103,7 @@ class FastCSSSplitWebpackPlugin {
102
103
const input = {
103
104
source : asset . source ( )
104
105
}
106
+ const dirname = path . dirname ( key )
105
107
const getName = ( i ) => this . options . filename ( Object . assign ( { } , asset , {
106
108
content : input . source ,
107
109
file : key ,
@@ -111,6 +113,7 @@ class FastCSSSplitWebpackPlugin {
111
113
const chunks = split ( input . source , this . options . size ) . map ( ( part , i ) => {
112
114
const result = new RawSource ( part . content )
113
115
result . name = getName ( i )
116
+ result . fullname = dirname && dirname !== '.' ? `${ dirname } /${ result . name } ` : result . name
114
117
return result
115
118
} )
116
119
@@ -136,11 +139,11 @@ class FastCSSSplitWebpackPlugin {
136
139
}
137
140
// Inject the new files into the chunk.
138
141
entry . chunks . forEach ( ( file ) => {
139
- assets [ file . name ] = file
140
- chunk . files . push ( file . name )
142
+ assets [ file . fullname ] = file
143
+ chunk . files . push ( file . fullname )
141
144
} )
142
145
const content = entry . chunks . map ( ( file ) => {
143
- return `@import "${ publicPath } /${ file . _name } ";`
146
+ return `@import "${ publicPath } /${ file . name } ";`
144
147
} ) . join ( '\n' )
145
148
const imports = this . options . imports ( Object . assign ( { } , entry , {
146
149
content
0 commit comments