@@ -84,19 +84,20 @@ exports.hasAnimation = function hasAnimation (styles) {
84
84
// Check if .js file with the same name exists.
85
85
// If it does -- check if it uses the css file (filename).
86
86
// If it does -- check if
87
- exports . maybeUpdateCssHash = function maybeUpdateCssHash ( filename ) {
88
- let componentName = filename . match ( / \/ ( [ ^ / ] + ) \. (?: s t y l | c s s ) $ / )
87
+ exports . maybeUpdateCssHash = function maybeUpdateCssHash ( filename , extensions ) {
88
+ const extensionsOr = '(?:' + extensions . join ( '|' ) . replace ( / \. / g, '\\.' ) + ')'
89
+ let componentName = filename . match ( new RegExp ( `\\/([^/]+)\\.${ extensionsOr } $` ) )
89
90
componentName = componentName && componentName [ 1 ]
90
- const jsFileName = `./ $ {componentName } .js`
91
+ const jsFileName = filename . replace ( / [ ^ \/ ] + $ / , ` $ {componentName } .js`)
91
92
if ( ! fs . existsSync ( jsFileName ) ) return
92
93
let jsFile = fs . readFileSync ( jsFileName , { encoding : 'utf8' } )
93
- if ( ! new RegExp ( `\\.\\/${ componentName } \\.(?:styl|css) ['"]` ) . test ( jsFile ) ) return
94
+ if ( ! new RegExp ( `\\.\\/${ componentName } \\.${ extensionsOr } ['"]` ) . test ( jsFile ) ) return
94
95
const content = fs . readFileSync ( filename , { encoding : 'utf8' } )
95
96
const newHash = hashCode ( content )
96
97
let oldHash = jsFile . match ( / @ c s s _ h a s h _ ( [ \d - ] + ) / )
97
98
oldHash = oldHash && oldHash [ 1 ]
98
99
if ( ~ ~ oldHash === ~ ~ newHash ) return
99
- jsFile = jsFile . replace ( new RegExp ( `(\\.\\/${ componentName } \\.(?:styl|css) ['"])[^\\n]*\n` ) , `$1 // @css_hash_${ newHash } \n` )
100
+ jsFile = jsFile . replace ( new RegExp ( `(\\.\\/${ componentName } \\.${ extensionsOr } ['"])[^\\n]*\n` ) , `$1 // @css_hash_${ newHash } \n` )
100
101
fs . writeFileSync ( jsFileName , jsFile )
101
102
console . log ( '[babel-plugin-cssta-stylename] updated @css_hash in' , jsFileName )
102
103
}
0 commit comments