Skip to content

Commit

Permalink
fix(sfc/style-vars): should ignore style variable bindings in comments (
Browse files Browse the repository at this point in the history
  • Loading branch information
edison1105 authored Jul 26, 2021
1 parent 1c7f5d3 commit 3a75d5d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
11 changes: 11 additions & 0 deletions packages/compiler-sfc/__tests__/__snapshots__/cssVars.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,17 @@ __default__.setup = __setup__
export default __default__"
`;
exports[`CSS vars injection codegen should ignore comments 1`] = `
"export default {
setup(__props, { expose }) {
expose()
const color = 'red'
return { color }
}
}"
`;
exports[`CSS vars injection codegen w/ <script setup> 1`] = `
"import { useCssVars as _useCssVars, unref as _unref } from 'vue'
Expand Down
13 changes: 13 additions & 0 deletions packages/compiler-sfc/__tests__/cssVars.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,19 @@ describe('CSS vars injection', () => {
)
})

//#4185
test('should ignore comments', () => {
const { content } = compileSFCScript(
`<script setup>const color = 'red'</script>\n` +
`<style>
div{ /* color: v-bind(color); */ width:20; }
</style>`
)

expect(content).not.toMatch(`_useCssVars`)
assertCode(content)
})

test('w/ <script setup> using the same var multiple times', () => {
const { content } = compileSFCScript(
`<script setup>
Expand Down
4 changes: 3 additions & 1 deletion packages/compiler-sfc/src/cssVars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ export function parseCssVars(sfc: SFCDescriptor): string[] {
const vars: string[] = []
sfc.styles.forEach(style => {
let match
while ((match = cssVarRE.exec(style.content))) {
// ignore v-bind() in comments /* ... */
const content = style.content.replace(/\/\*[\s\S]*\*\//g, '')
while ((match = cssVarRE.exec(content))) {
const variable = match[1] || match[2] || match[3]
if (!vars.includes(variable)) {
vars.push(variable)
Expand Down

0 comments on commit 3a75d5d

Please sign in to comment.