Skip to content

Commit 7e36d7c

Browse files
committed
feat: add opts outputLessIgnoreCssDarkVar, outputTypeIgnoreCssDarkVar
1 parent f413601 commit 7e36d7c

9 files changed

+57
-30
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@ jsVarToCssVar({
3333
//
3434
outputLessPath: `${CUR_DIR}/_output--js/style--less-1.less`, // [Optional]
3535
outputLessHeaderImport: `@import './variables.less';`, // [Optional]
36+
outputLessIgnoreCssDarkVar: false, // [Optional]
37+
3638
//
3739
outputTypePath: `${CUR_DIR}/_output--js/style--type-1.ts`, // [Optional]
3840
outputTypeName: 'ITheme1', // [Optional]
41+
outputTypeIgnoreCssDarkVar: false, // [Optional]
3942
});
4043

4144
```

__tests__/_output--ts/style--type-2.ts

-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ export type ITheme2 =
99
| '--pos-top'
1010
| '--theme-light'
1111
| '--theme-dark'
12-
| '--text-color'
13-
| '--bg-color'
1412
| '--font-size-xs'
1513
| '--font-size-md'
1614
| '--font-size-lg'

__tests__/_output--ts/theme--less-2.less

-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ All code is automatically generated by plugin `js-var-to-css-var`.
1010
@pos-top: 0;
1111
@theme-light: ~'theme-light';
1212
@theme-dark: ~'theme-dark';
13-
@text-color: #c70000;
14-
@bg-color: #e0e0e0;
1513
@font-size-xs: 12px;
1614
@font-size-md: 18px;
1715
@font-size-lg: 24px;

__tests__/test-output--ts.ts

+2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@ jsVarToCssVar([
3131
//
3232
outputLessPath: `${CUR_DIR}/_output--ts/theme--less-2.less`,
3333
outputLessHeaderImport: `@import './variables.less';`,
34+
outputLessIgnoreCssDarkVar: true,
3435
//
3536
outputTypePath: `${CUR_DIR}/_output--ts/style--type-2.ts`,
3637
outputTypeName: 'ITheme2',
38+
outputTypeIgnoreCssDarkVar: true,
3739
}
3840
]);

src/genCss.ts

+12-12
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ export const genCss = async (jsKvObj: IJsKvObj, opts?: IJsVarToCssVarOpts) => {
1414
let CONTENT = '';
1515

1616
for (const k in jsKvObj?.jsKv) {
17-
if (!k) return;
17+
if (k) {
18+
let v = jsKvObj.jsKv[k];
1819

19-
let v = jsKvObj.jsKv[k];
20-
21-
// filter less syntax
22-
if (typeof v === 'string') v = v.replace('~', '');
20+
// filter less syntax
21+
if (typeof v === 'string') v = v.replace('~', '');
2322

24-
CONTENT += ` ${k}: ${v};\n`;
23+
CONTENT += ` ${k}: ${v};\n`;
24+
}
2525
}
2626

2727
const CONTENT_CLOSE = `}\n`;
@@ -33,14 +33,14 @@ export const genCss = async (jsKvObj: IJsKvObj, opts?: IJsVarToCssVarOpts) => {
3333
let SCOPE_DARK = `${opts.outputCssDarkScopeTag} {\n`;
3434

3535
for (const k in jsKvObj?.jsKvDark) {
36-
if (!k) return;
36+
if (k) {
37+
let v = jsKvObj.jsKvDark[k];
3738

38-
let v = jsKvObj.jsKvDark[k];
39-
40-
// filter less syntax
41-
if (typeof v === 'string') v = v.replace('~', '');
39+
// filter less syntax
40+
if (typeof v === 'string') v = v.replace('~', '');
4241

43-
CONTENT_DARK += ` ${k}: ${v};\n`;
42+
CONTENT_DARK += ` ${k}: ${v};\n`;
43+
}
4444
}
4545

4646
RESULT += `\n${SCOPE_DARK}${CONTENT_DARK}${CONTENT_CLOSE}`;

src/genLess.ts

+17-5
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,25 @@ export const genLess = async (jsKvObj: IJsKvObj, opts?: IJsVarToCssVarOpts) => {
1313
HEADER = `${__CODE_GEN_COMMENT__}\n${opts?.outputLessHeaderImport}\n\n`;
1414
}
1515

16-
let CONTENT = '';
16+
// clone kv
17+
const jsKv = { ...jsKvObj.jsKv };
18+
19+
// ignoreCssDarkVar
20+
if (opts?.outputLessIgnoreCssDarkVar) {
21+
for (const k in jsKvObj.jsKvDark) {
22+
if (k in jsKv) {
23+
delete jsKv[k]
24+
}
25+
}
26+
}
1727

18-
for (const k in jsKvObj.jsKv) {
19-
if (!k) return;
28+
let CONTENT = '';
2029

21-
const v = jsKvObj.jsKv[k];
22-
CONTENT += `${k.replace('--', '@')}: ${v};\n`;
30+
for (const k in jsKv) {
31+
if (k) {
32+
const v = jsKvObj.jsKv[k];
33+
CONTENT += `${k.replace('--', '@')}: ${v};\n`;
34+
}
2335
}
2436

2537
const FOOTER = ``;

src/genType.ts

+15-3
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,22 @@ export const genType = async (jsKvObj: IJsKvObj, opts?: IJsVarToCssVarOpts) => {
1212

1313
let CONTENT = `export type ${opts.outputTypeName} =\n`;
1414

15-
for (const k in jsKvObj.jsKv) {
16-
if (!k) return;
15+
// clone kv
16+
const jsKv = { ...jsKvObj.jsKv };
17+
18+
// ignoreCssDarkVar
19+
if (opts?.outputTypeIgnoreCssDarkVar) {
20+
for (const k in jsKvObj.jsKvDark) {
21+
if (k in jsKv) {
22+
delete jsKv[k]
23+
}
24+
}
25+
}
1726

18-
CONTENT += ` | '${k}'\n`;
27+
for (const k in jsKv) {
28+
if (k) {
29+
CONTENT += ` | '${k}'\n`;
30+
}
1931
}
2032

2133
const FOOTER = `\n`;

src/jsVarToCssVar.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export function jsVarToCssVar(optsList?: IJsVarToCssVarOpts[]) {
6868
}
6969

7070
if (opts?.outputCssPath) genCss({ jsKv, jsKvDark }, opts);
71-
if (opts?.outputLessPath) genLess({ jsKv }, opts);
72-
if (opts?.outputTypePath) genType({ jsKv }, opts);
71+
if (opts?.outputLessPath) genLess({ jsKv, jsKvDark }, opts);
72+
if (opts?.outputTypePath) genType({ jsKv, jsKvDark }, opts);
7373
})
7474
}

src/types.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ export interface IJsVarToCssVarOpts {
1515
outputCssDarkScopeTag?: string; // ':root.dark'
1616
outputCssDarkVarSuffix?: string; // '--dark'
1717
//
18-
outputLessPath?: string; // `${CUR_DIR}/_output--js/theme.less` // [Optional]
19-
outputLessHeaderImport?: string; // `@import './variables.less';` // [Optional]
18+
outputLessPath?: string; // `${CUR_DIR}/_output--js/theme.less` // [Optional]
19+
outputLessHeaderImport?: string; // `@import './variables.less';` // [Optional]
20+
outputLessIgnoreCssDarkVar?: boolean; // [Optional]
2021
//
21-
outputTypePath?: string; // `${CUR_DIR}/_output--js/theme.ts` // [Optional]
22-
outputTypeName?: string; // 'ITheme', // [Optional]
22+
outputTypePath?: string; // `${CUR_DIR}/_output--js/theme.ts` // [Optional]
23+
outputTypeName?: string; // 'ITheme', // [Optional]
24+
outputTypeIgnoreCssDarkVar?: boolean; // [Optional]
2325
//
2426
}
2527

0 commit comments

Comments
 (0)