Skip to content

Commit d39efa0

Browse files
committed
fix: improve dts compatibility
1 parent 4949891 commit d39efa0

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

src/plugin/generate-types.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,19 @@ const genereateNamedExports = (
4545

4646
const generateDefaultExport = (
4747
exportedVariables: ExportedVariable[],
48-
) => `export default {\n${
49-
exportedVariables.map(
50-
([jsVariable, exportName]) => `\t${
51-
jsVariable === exportName
48+
) => {
49+
// Generate type-safe default export compatible with rollup-plugin-dts
50+
const properties = exportedVariables.map(
51+
([jsVariable, exportName]) => {
52+
const key = jsVariable === exportName
5253
? jsVariable
53-
: `${exportName}: ${jsVariable}`}`,
54-
).join(',\n')
55-
}\n};`;
54+
: exportName;
55+
return `\t${key}: typeof ${jsVariable};`;
56+
},
57+
).join('\n');
58+
59+
return `declare const _default: {\n${properties}\n};\nexport default _default;`;
60+
};
5661

5762
export const generateTypes = (
5863
exports: Exports,
@@ -63,7 +68,7 @@ export const generateTypes = (
6368
const exportedVariables = Object.entries(exports).flatMap(
6469
([exportName, { exportAs }]) => {
6570
const jsVariable = makeLegalIdentifier(exportName);
66-
variables.add(`const ${jsVariable}: string;`);
71+
variables.add(`declare const ${jsVariable}: string;`);
6772

6873
return Array.from(exportAs).map((exportAsName) => {
6974
const exportNameSafe = makeLegalIdentifier(exportAsName);

tests/specs/patched/postcss.spec.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -808,20 +808,21 @@ export default testSuite(({ describe }) => {
808808
* https://npmjs.com/vite-css-modules
809809
*/
810810
811-
const _import: string;
812-
const _export: string;
813-
const _default: string;
811+
declare const _import: string;
812+
declare const _export: string;
813+
declare const _default: string;
814814
815815
export {
816816
_import as "import",
817817
_export as "export"
818818
};
819819
820-
export default {
821-
"import": _import,
822-
"export": _export,
823-
"default": _default
820+
declare const _default: {
821+
"import": typeof _import;
822+
"export": typeof _export;
823+
"default": typeof _default;
824824
};
825+
export default _default;
825826
826827
`,
827828
);
@@ -866,9 +867,9 @@ export default testSuite(({ describe }) => {
866867
* https://npmjs.com/vite-css-modules
867868
*/
868869
869-
const _import: string;
870-
const _export: string;
871-
const _default: string;
870+
declare const _import: string;
871+
declare const _export: string;
872+
declare const _default: string;
872873
873874
export {
874875
_import as "import",
@@ -919,15 +920,16 @@ export default testSuite(({ describe }) => {
919920
* https://npmjs.com/vite-css-modules
920921
*/
921922
922-
const _import: string;
923-
const _export: string;
924-
const _default: string;
923+
declare const _import: string;
924+
declare const _export: string;
925+
declare const _default: string;
925926
926-
export default {
927-
"import": _import,
928-
"export": _export,
929-
"default": _default
927+
declare const _default: {
928+
"import": typeof _import;
929+
"export": typeof _export;
930+
"default": typeof _default;
930931
};
932+
export default _default;
931933
932934
`,
933935
);

0 commit comments

Comments
 (0)