该包处于实验阶段,不建议直接使用在生产环境
为解决 使用 vue-tsc 内部 API 生成 .d.ts
文件时,
由于vue-tsc内部 API 变更过于频繁,
无法基于 semver 规范宽松匹配 vue-tsc 版本的问题。
基于 vue-tsc >=2.0.19 封装
如果部分 volar 插件无法正确的加载,可能是 该 volar 插件未适配 vue/language-tools 2.x.x 的更新
npm i @vrx-volar/dts
yarn add @vrx-volar/dts
pnpm add @vrx-volar/dts
bun add @vrx-volar/dts
根据 minimatch 规则匹配项目文件,并为其转换对应 .d.ts
文件
import { createProject, writeTypes } from '@vrx-volar/dts'
const { files } = await createProject({
match: ['**/*.vue', '**/*.?({m,c}){ts,js}?(x)'],
globbyOptions: {
absolute: true,
onlyFiles: true,
},
})
// 项目入口文件夹
const inputDir = join(process.cwd(),'src')
// 项目出口文件夹
const outDir = join(process.cwd(),'dist')
// 将 转换的结果写入文件系统
await writeTypes(inputDir,outDir,files)
// 自定义写入时的后缀名
// 在该例子下生成 *.d.ts *.d.mts
await writeTypes(inputDir,outDir,files,['.d.ts','.d.mts'])
// 自定义写入时的后缀名
// 在该例子下仅生成 *.d.mts
await writeTypes(inputDir,outDir,files,['.d.mts'])
将文件夹下所有.d.ts
,合并到指定入口.d.ts
文件中,并删除文件夹下其余所有 .d.ts
文件
import { createProject, write } from '@vrx-volar/dts'
const { files } = await createProject({
match: ['**/*.vue', '**/*.?({m,c}){ts,js}?(x)'],
globbyOptions: {
absolute: true,
onlyFiles: true,
},
})
// 项目入口文件夹
const inputDir = join(process.cwd(),'src')
// 项目出口文件夹
const outDir = join(process.cwd(),'dist')
// 将 转换的结果写入文件系统
await write(inputDir,outDir,files)
// 将所有.d.ts 集合到 index.d.ts 文件中
await rollupTypes('index.d.ts',outDir)
// 自定义写入时的后缀名
// 在该例子下生成 index.d.ts index.d.mts
await rollupTypes('index.d.ts',outDir,['.d.ts','.d.mts'])
// 自定义写入时的后缀名
// 在该例子下仅生成 index.d.mts
await rollupTypes('index.d.ts',outDir,['.d.mts'])
删除指定目录下所有的 .d.ts
文件
import { cleanTypes } from '@vrx-volar/dts'
await cleanTypes(outDir)
其余 API 请参照 @vrx-volar/tsc