Skip to content

Commit 452cd84

Browse files
committed
fix(cli): suppress postcss/lightningcss IMPORT_IS_UNDEFINED warnings
1 parent 0005f02 commit 452cd84

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

packages/cli/src/pack-bin.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,31 @@ import { resolveViteConfig } from './resolve-vite-config.js';
2323
* Since .d.ts files contain only type information, all imports/exports are
2424
* inherently type-only, so this transformation is always safe.
2525
*/
26-
const EXTERNAL_DTS_FIX_RE =
27-
/node_modules\/(postcss|lightningcss)\/.*\.d\.(ts|mts|cts)$|lightningcssOptions\.d\.ts$/;
26+
const EXTERNAL_DTS_INTERNAL_RE =
27+
/node_modules\/(postcss|lightningcss)\/.*\.d\.(ts|mts|cts)$/;
28+
const EXTERNAL_DTS_CONSUMER_RE =
29+
/lightningcssOptions\.d\.ts$|vite-plus-core\/dist\/.*\.d\.ts$/;
30+
const EXTERNAL_DTS_FIX_RE = new RegExp(
31+
`${EXTERNAL_DTS_INTERNAL_RE.source}|${EXTERNAL_DTS_CONSUMER_RE.source}`,
32+
);
2833

2934
function externalDtsTypeOnlyPlugin() {
3035
return {
3136
name: 'vite-plus:external-dts-type-only',
3237
transform: {
3338
filter: { id: { include: [EXTERNAL_DTS_FIX_RE] } },
34-
handler(code: string) {
35-
return code
36-
.replace(/^(import\s+)(?!type\s)/gm, 'import type ')
37-
.replace(/^(export\s+)\{/gm, 'export type {');
39+
handler(code: string, id: string) {
40+
if (EXTERNAL_DTS_INTERNAL_RE.test(id)) {
41+
// postcss/lightningcss internal files: transform all imports and exports
42+
return code
43+
.replace(/^(import\s+)(?!type\s)/gm, 'import type ')
44+
.replace(/^(export\s+)\{/gm, 'export type {');
45+
}
46+
// Consumer files: only transform imports from postcss/lightningcss
47+
return code.replace(
48+
/^(import\s+)(?!type\s)(.+from\s+['"](?:postcss|lightningcss)['"])/gm,
49+
'import type $2',
50+
);
3851
},
3952
},
4053
};

0 commit comments

Comments
 (0)