Skip to content

Commit 2cbaf72

Browse files
authored
refactor: refactor project dir and updated unit test (#16)
* update: updated unit test * refactor: refactor project dir
1 parent 96bf044 commit 2cbaf72

24 files changed

+92
-27
lines changed

packages/core/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import { createUnplugin } from 'unplugin'
22
import { NAME } from '@unplugin-vue-cssvars/utils'
33
import { createFilter } from '@rollup/pluginutils'
44
import { parse } from '@vue/compiler-sfc'
5-
import { preProcessCSS } from './css/pre-process-css'
6-
import { createCSSModule } from './css/process-css'
5+
import { preProcessCSS } from './runtime/pre-process-css'
6+
import { createCSSModule } from './runtime/process-css'
77
import { initOption } from './option'
8-
import { getVariable } from './get-variable'
8+
import { getVariable } from './parser/parser-variable'
99
import { injectCSSVars } from './inject/inject-cssvars'
1010
import { revokeCSSVars } from './inject/revoke-cssvars'
1111
import type { IBundle, Options } from './types'

packages/core/option/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import {
55
extend,
66
} from '@unplugin-vue-cssvars/utils'
77
import type { Options } from '../types'
8-
export const defaultOption: Options = {
8+
9+
const defaultOption: Options = {
910
rootDir: resolve(),
1011
include: DEFAULT_INCLUDE_REG,
1112
exclude: DEFAULT_EXCLUDE_REG,

packages/core/get-variable/__test__/get-variable.spec.ts renamed to packages/core/parser/__test__/parser-variable.spec.ts

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import { describe, expect, test } from 'vitest'
22
import { parse as babelParse } from '@babel/parser'
33
import {
4-
getObjectExpressionReturnNode, getVariableNameByScript, getVariableNameBySetup,
4+
getObjectExpressionReturnNode,
5+
getVariable,
6+
getVariableNameByScript,
7+
getVariableNameBySetup,
58
setScriptContent,
6-
} from '../index'
9+
} from '../parser-variable'
710
describe('get variable name', () => {
811
test('getObjectExpressionReturnNode', () => {
912
const mockNode = {
@@ -406,4 +409,31 @@ describe('get variable name', () => {
406409
},
407410
})
408411
})
412+
413+
test('getVariable: basic', () => {
414+
const mockDescriptor = {
415+
scriptSetup: null,
416+
script: {
417+
content: 'export default {\n'
418+
+ 'data(){\n'
419+
+ ' return {\n'
420+
+ ' foo: \'data-foo\',\n'
421+
+ ' }\n'
422+
+ ' },\n'
423+
+ ' setup(){\n'
424+
+ ' return {\n'
425+
+ ' foo: \'setup-foo\',\n'
426+
+ ' }\n'
427+
+ ' }\n'
428+
+ '}',
429+
},
430+
} as any
431+
const res = getVariable(mockDescriptor)
432+
expect(res).toMatchObject({
433+
foo: {
434+
type: 'StringLiteral',
435+
value: 'setup-foo',
436+
},
437+
})
438+
})
409439
})
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@import test
2+
#app
3+
div
4+
color: v-bind(sassColor)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@import ./test2
2+
#app
3+
div
4+
color: v-bind(fooColor)

packages/core/css/__test__/pre-process-css.spec.ts renamed to packages/core/runtime/__test__/pre-process-css.spec.ts

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,8 @@ describe('pre process css', () => {
307307

308308
test('preProcessCSS: basic', () => {
309309
const res = preProcessCSS({ rootDir: resolve('packages') })
310-
const mockPathTest1 = transformSymbol(`${resolve()}/core/css/__test__/test.css`)
311-
const mockPathTest2 = transformSymbol(`${resolve()}/core/css/__test__/test2.css`)
310+
const mockPathTest1 = transformSymbol(`${resolve()}/core/runtime/__test__/test.css`)
311+
const mockPathTest2 = transformSymbol(`${resolve()}/core/runtime/__test__/test2.css`)
312312
const resTest1 = res.get(mockPathTest1)
313313
const resTest2 = res.get(mockPathTest2)
314314

@@ -325,9 +325,9 @@ describe('pre process css', () => {
325325

326326
test('preProcessCSS: map path scss -> css or scss', () => {
327327
const res = preProcessCSS({ rootDir: resolve('packages') })
328-
const mockPathFooSCSS = transformSymbol(`${resolve()}/core/css/__test__/foo.scss`)
329-
const mockPathTestSCSS = transformSymbol(`${resolve()}/core/css/__test__/test.scss`)
330-
const mockPathTest2CSS = transformSymbol(`${resolve()}/core/css/__test__/test2.css`)
328+
const mockPathFooSCSS = transformSymbol(`${resolve()}/core/runtime/__test__/foo.scss`)
329+
const mockPathTestSCSS = transformSymbol(`${resolve()}/core/runtime/__test__/test.scss`)
330+
const mockPathTest2CSS = transformSymbol(`${resolve()}/core/runtime/__test__/test2.css`)
331331
// foo.scss -> test.css or test.scss ? -> test.scss
332332
const importerFooSCSS = res.get(mockPathFooSCSS)
333333
expect([...importerFooSCSS!.importer][0]).toBe(mockPathTestSCSS)
@@ -336,8 +336,8 @@ describe('pre process css', () => {
336336
expect([...importerTestSCSS!.importer][0]).toBe(mockPathTest2CSS)
337337

338338
// foo2.scss -> test2.css
339-
const mockPathFoo2SCSS = transformSymbol(`${resolve()}/core/css/__test__/foo2.scss`)
340-
const mockPathTestCSS = transformSymbol(`${resolve()}/core/css/__test__/test.css`)
339+
const mockPathFoo2SCSS = transformSymbol(`${resolve()}/core/runtime/__test__/foo2.scss`)
340+
const mockPathTestCSS = transformSymbol(`${resolve()}/core/runtime/__test__/test.css`)
341341
const importerFoo2SCSS = res.get(mockPathFoo2SCSS)
342342
expect([...importerFoo2SCSS!.importer][0]).toBe(mockPathTest2CSS)
343343
// test2.css -> test.css or test.scss ? -> test.css
@@ -347,9 +347,9 @@ describe('pre process css', () => {
347347

348348
test('preProcessCSS: map path less -> css or less', () => {
349349
const res = preProcessCSS({ rootDir: resolve('packages') })
350-
const mockPathFooLESS = transformSymbol(`${resolve()}/core/css/__test__/foo.less`)
351-
const mockPathTestLESS = transformSymbol(`${resolve()}/core/css/__test__/test.less`)
352-
const mockPathTest2CSS = transformSymbol(`${resolve()}/core/css/__test__/test2.css`)
350+
const mockPathFooLESS = transformSymbol(`${resolve()}/core/runtime/__test__/foo.less`)
351+
const mockPathTestLESS = transformSymbol(`${resolve()}/core/runtime/__test__/test.less`)
352+
const mockPathTest2CSS = transformSymbol(`${resolve()}/core/runtime/__test__/test2.css`)
353353
// foo.less -> test.css or test.less ? -> test.less
354354
const importerFooLESS = res.get(mockPathFooLESS)
355355
expect([...importerFooLESS!.importer][0]).toBe(mockPathTestLESS)
@@ -358,8 +358,8 @@ describe('pre process css', () => {
358358
expect([...importerTestLESS!.importer][0]).toBe(mockPathTest2CSS)
359359

360360
// foo2.less -> test2.css
361-
const mockPathFoo2LESS = transformSymbol(`${resolve()}/core/css/__test__/foo2.less`)
362-
const mockPathTestCSS = transformSymbol(`${resolve()}/core/css/__test__/test.css`)
361+
const mockPathFoo2LESS = transformSymbol(`${resolve()}/core/runtime/__test__/foo2.less`)
362+
const mockPathTestCSS = transformSymbol(`${resolve()}/core/runtime/__test__/test.css`)
363363
const importerFoo2LESS = res.get(mockPathFoo2LESS)
364364
expect([...importerFoo2LESS!.importer][0]).toBe(mockPathTest2CSS)
365365
// test2.css -> test.css or test.less ? -> test.css
@@ -369,9 +369,9 @@ describe('pre process css', () => {
369369

370370
test('preProcessCSS: map path styl -> css or styl', () => {
371371
const res = preProcessCSS({ rootDir: resolve('packages') })
372-
const mockPathFooSTYL = transformSymbol(`${resolve()}/core/css/__test__/foo.styl`)
373-
const mockPathTestSTYL = transformSymbol(`${resolve()}/core/css/__test__/test.styl`)
374-
const mockPathTest2CSS = transformSymbol(`${resolve()}/core/css/__test__/test2.css`)
372+
const mockPathFooSTYL = transformSymbol(`${resolve()}/core/runtime/__test__/foo.styl`)
373+
const mockPathTestSTYL = transformSymbol(`${resolve()}/core/runtime/__test__/test.styl`)
374+
const mockPathTest2CSS = transformSymbol(`${resolve()}/core/runtime/__test__/test2.css`)
375375
// foo.styl -> test.css or test.styl ? -> test.styl
376376
const importerFooSTYL = res.get(mockPathFooSTYL)
377377
expect([...importerFooSTYL!.importer][0]).toBe(mockPathTestSTYL)
@@ -380,15 +380,37 @@ describe('pre process css', () => {
380380
expect([...importerTestSTYL!.importer][0]).toBe(mockPathTest2CSS)
381381

382382
// foo2.styl -> test2.css
383-
const mockPathFoo2STYL = transformSymbol(`${resolve()}/core/css/__test__/foo2.styl`)
384-
const mockPathTestCSS = transformSymbol(`${resolve()}/core/css/__test__/test.css`)
383+
const mockPathFoo2STYL = transformSymbol(`${resolve()}/core/runtime/__test__/foo2.styl`)
384+
const mockPathTestCSS = transformSymbol(`${resolve()}/core/runtime/__test__/test.css`)
385385
const importerFoo2STYL = res.get(mockPathFoo2STYL)
386386
expect([...importerFoo2STYL!.importer][0]).toBe(mockPathTest2CSS)
387387
// test2.css -> test.css or test.styl ? -> test.css
388388
const importerTest2CSS = res.get(mockPathTest2CSS)
389389
expect([...importerTest2CSS!.importer][0]).toBe(mockPathTestCSS)
390390
})
391391

392+
test('preProcessCSS: map path sass -> css or sass', () => {
393+
const res = preProcessCSS({ rootDir: resolve('packages') })
394+
const mockPathFooSASS = transformSymbol(`${resolve()}/core/runtime/__test__/foo.sass`)
395+
const mockPathTestSASS = transformSymbol(`${resolve()}/core/runtime/__test__/test.sass`)
396+
const mockPathTest2CSS = transformSymbol(`${resolve()}/core/runtime/__test__/test2.css`)
397+
// foo.sass -> test.css or test.sass ? -> test.sass
398+
const importerFooSASS = res.get(mockPathFooSASS)
399+
expect([...importerFooSASS!.importer][0]).toBe(mockPathTestSASS)
400+
// foo.sass -> test.css or test.sass ? -> test.sass -> test2.css
401+
const importerTestSASS = res.get(mockPathTestSASS)
402+
expect([...importerTestSASS!.importer][0]).toBe(mockPathTest2CSS)
403+
404+
// foo2.sass -> test2.css
405+
const mockPathFoo2SASS = transformSymbol(`${resolve()}/core/runtime/__test__/foo2.sass`)
406+
const mockPathTestCSS = transformSymbol(`${resolve()}/core/runtime/__test__/test.css`)
407+
const importerFoo2SASS = res.get(mockPathFoo2SASS)
408+
expect([...importerFoo2SASS!.importer][0]).toBe(mockPathTest2CSS)
409+
// test2.css -> test.css or test.sass ? -> test.css
410+
const importerTest2CSS = res.get(mockPathTest2CSS)
411+
expect([...importerTest2CSS!.importer][0]).toBe(mockPathTestCSS)
412+
})
413+
392414
test('getCurFileContent: basic', () => {
393415
const mockSassContent = '@import "./test";\n'
394416
+ '@use \'./test-use\';\n'
@@ -570,7 +592,7 @@ describe('pre process css', () => {
570592
+ '.test {\n'
571593
+ ' color: v-bind(appTheme2);\n'
572594
+ '}'
573-
const mockPath = `${resolve('packages')}/core/css/__test__/test2.css`
595+
const mockPath = `${resolve('packages')}/core/runtime/__test__/test2.css`
574596
const res = generateCSSCode(mockPath, '.css')
575597
expect(delTransformSymbol(res)).toBe(delTransformSymbol(mockCSSContent))
576598
expect(delTransformSymbol(res)).toMatchSnapshot()
@@ -581,7 +603,7 @@ describe('pre process css', () => {
581603
+ '#app div {\n'
582604
+ ' color: v-bind(fooColor);\n'
583605
+ '}'
584-
const mockPath = `${resolve('packages')}/core/css/__test__/foo.scss`
606+
const mockPath = `${resolve('packages')}/core/runtime/__test__/foo.scss`
585607
const res = generateCSSCode(mockPath, '.scss')
586608

587609
expect(delTransformSymbol(res)).toBe(delTransformSymbol(mockSassContent))
@@ -594,7 +616,7 @@ describe('pre process css', () => {
594616
+ ' color: v-bind(fooColor);\n'
595617
+ '}'
596618
+ '\n'
597-
const mockPath = `${resolve('packages')}/core/css/__test__/foo.less`
619+
const mockPath = `${resolve('packages')}/core/runtime/__test__/foo.less`
598620
const res = generateCSSCode(mockPath, '.less')
599621
expect(delTransformSymbol(res)).toBe(delTransformSymbol(mockLessContent))
600622
expect(delTransformSymbol(res)).toMatchSnapshot()
@@ -606,7 +628,7 @@ describe('pre process css', () => {
606628
+ ' color: v-bind(stylColor);\n'
607629
+ '}'
608630
+ '\n'
609-
const mockPath = `${resolve('packages')}/core/css/__test__/foo.styl`
631+
const mockPath = `${resolve('packages')}/core/runtime/__test__/foo.styl`
610632
const res = generateCSSCode(mockPath, '.styl')
611633
expect(delTransformSymbol(res)).toBe(delTransformSymbol(mockStylContent))
612634
expect(delTransformSymbol(res)).toMatchSnapshot()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@import ./test2
2+
.sass
3+
color: v-bind(color)

packages/core/css/pre-process-css.ts renamed to packages/core/runtime/pre-process-css.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ export function preProcessCSS(options: SearchGlobOptions): ICSSFileMap {
197197
return cssFiles
198198
}
199199

200+
// TODO 可以优化, 预编译会导致速度变慢
200201
export function generateCSSCode(path: string, suffix: string) {
201202
const code = fs.readFileSync(path, { encoding: 'utf-8' })
202203
let res = ''

0 commit comments

Comments
 (0)