Skip to content

Commit 5381002

Browse files
committed
feat(mkdist): only generate new dts when mkdist support it
1 parent 6954dc2 commit 5381002

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/plugins/mkdist.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import type { LoaderFile } from '../block-loader/types'
22
import type { VueSFCTransformerFileLoader } from '../sfc-transformer'
33
import type { Loader } from '../types/mkdist'
4+
import { readFileSync } from 'node:fs'
5+
import { createRequire } from 'node:module'
46
import { resolve } from 'node:path'
57
import { scriptLoader } from '../block-loader/script'
68
import { styleLoader } from '../block-loader/style'
@@ -19,6 +21,27 @@ function importEsbuild(): Promise<typeof import('esbuild')> | typeof import('esb
1921
})()
2022
}
2123

24+
let _isMkdistSupportDualVueDts: boolean | undefined
25+
function isMkdistSupportDualVueDts(): boolean {
26+
if (typeof _isMkdistSupportDualVueDts === 'boolean') {
27+
return _isMkdistSupportDualVueDts
28+
}
29+
try {
30+
const require = createRequire(import.meta.url)
31+
const mkdistPath = require.resolve('mkdist')
32+
const packageJson = readFileSync(resolve(mkdistPath, '..', '..', 'package.json'), 'utf-8')
33+
const { version = '0.0.0' } = JSON.parse(packageJson) as { version: string }
34+
const [major = 0, minor = 0, patch = 0] = version.split('.').map(n => Number.parseInt(n))
35+
const normalizedVersion = major * 1_000_000 + minor * 1_000 + patch
36+
37+
return !Number.isNaN(normalizedVersion) && normalizedVersion > 2_003_000
38+
}
39+
catch (error) {
40+
console.error(`Error checking mkdist version: ${error}`)
41+
return false
42+
}
43+
}
44+
2245
const vueSFCTransformer = defineVueSFCTransformer({
2346
blockLoaders: {
2447
template: templateLoader,
@@ -77,7 +100,7 @@ export const vueLoader: Loader = async (input, mkdistContext) => {
77100
extension: '.js',
78101
getContents: () => 'export default {}',
79102
}))?.filter(f => f.declaration) || []
80-
if (dts.length) {
103+
if (dts.length && isMkdistSupportDualVueDts()) {
81104
dts.push({
82105
contents: await input.getContents(),
83106
path: input.path,

0 commit comments

Comments
 (0)