Skip to content

Commit 393bdc2

Browse files
committed
Properly update hash when custom extensions are used
1 parent ae4486c commit 393bdc2

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

Diff for: index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,10 @@ module.exports = ({ types: t }) => {
140140
// Delay execution to account for Save All delay in IDEs
141141
if (delayExecution) {
142142
setTimeout(() => {
143-
utils.maybeUpdateCssHash(filename)
143+
utils.maybeUpdateCssHash(filename, state.opts.extensions || DEFAULT_EXTENSIONS)
144144
}, ADD_CSS_HASH_DELAY)
145145
} else {
146-
utils.maybeUpdateCssHash(filename)
146+
utils.maybeUpdateCssHash(filename, state.opts.extensions || DEFAULT_EXTENSIONS)
147147
}
148148
}
149149
}

Diff for: utils.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,20 @@ exports.hasAnimation = function hasAnimation (styles) {
8484
// Check if .js file with the same name exists.
8585
// If it does -- check if it uses the css file (filename).
8686
// If it does -- check if
87-
exports.maybeUpdateCssHash = function maybeUpdateCssHash (filename) {
88-
let componentName = filename.match(/\/([^/]+)\.(?:styl|css)$/)
87+
exports.maybeUpdateCssHash = function maybeUpdateCssHash (filename, extensions) {
88+
const extensionsOr = '(?:' + extensions.join('|').replace(/\./g, '\\.') + ')'
89+
let componentName = filename.match(new RegExp(`\\/([^/]+)\\.${extensionsOr}$`))
8990
componentName = componentName && componentName[1]
90-
const jsFileName = `./${componentName}.js`
91+
const jsFileName = filename.replace(/[^\/]+$/, `${componentName}.js`)
9192
if (!fs.existsSync(jsFileName)) return
9293
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
9495
const content = fs.readFileSync(filename, { encoding: 'utf8' })
9596
const newHash = hashCode(content)
9697
let oldHash = jsFile.match(/@css_hash_([\d-]+)/)
9798
oldHash = oldHash && oldHash[1]
9899
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`)
100101
fs.writeFileSync(jsFileName, jsFile)
101102
console.log('[babel-plugin-cssta-stylename] updated @css_hash in', jsFileName)
102103
}

0 commit comments

Comments
 (0)