核心是 emitDeclarationOnly
, declarationDir
, declaration
也可以通过 tsc
命令 传入这些参数, 生成 d.ts
vite.config.ts
// 导入 ts
import ts from 'typescript';
import path from 'node:path';
let input = path.resolve(__dirname, "src/index.ts");
// 插件
plugins: [
{
name: "emit-dts",
buildEnd() {
const program = ts.createProgram([input], {
target: ts.ScriptTarget.ESNext,
module: ts.ModuleKind.ESNext,
moduleResolution: ts.ModuleResolutionKind.NodeJs,
// jsx实现 根据自己的需求改
jsx: ts.JsxEmit.Preserve,
jsxImportSource: "solid-js",
allowSyntheticDefaultImports: true,
esModuleInterop: true,
// js 源码输出的文件夹
outDir: `dist/source`,
// d.ts 输出的文件夹
declarationDir: `dist/types`,
declaration: true,
// true 只输出 dts 到 declarationDir,
// false 同时输出js源码到 outDir
emitDeclarationOnly: true,
allowJs: true,
});
program.emit();
},
},
// 其他插件 ↓
],