diff --git a/src/cli.ts b/src/cli.ts index 1d3a228..cba75e8 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -7,9 +7,10 @@ const cli = cac('vue-dts-gen') cli .command('[...vue files]', 'Generate .d.ts for .vue files') .option('--outDir ', 'Output directory') - .action(async (input, flags: { outDir?: string }) => { + .option('--tsconfig ','specified tsconfig.json with absolute path') + .action(async (input, flags: { outDir?: string,tsconfig?:string }) => { const { build } = await import('./') - await build({ input, outDir: flags.outDir }) + await build({ input, outDir: flags.outDir,tsconfig:flags.tsconfig }) }) cli.version(version) diff --git a/src/index.ts b/src/index.ts index 7e4d56e..ee0f416 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ import glob from 'fast-glob' export type Options = { input: string | string[] outDir?: string + tsconfig?:string } let vueCompiler: typeof import('@vue/compiler-sfc') @@ -25,11 +26,30 @@ const getVueCompiler = () => { return vueCompiler } -export async function build({ input, outDir }: Options) { +export async function build({ input, outDir,tsconfig }: Options) { const vueCompiler = getVueCompiler() - const tsConfigFilePath = fs.existsSync('tsconfig.json') - ? 'tsconfig.json' - : undefined + if (Array.isArray(input)) { + input = input.map((v)=>{ + v=v.split(path.sep).join('/'); + return v; + }) + } + else{ + input = input.split(path.sep).join('/') + } + let tsConfigFilePath:string|undefined + if (tsconfig){ + tsConfigFilePath = tsconfig + if (!fs.existsSync(tsConfigFilePath)) { + tsConfigFilePath = undefined + } + tsConfigFilePath ? console.log('Using tsconfig:',tsConfigFilePath):console.log('tsconfig don\'t exist'); + } + else { + tsConfigFilePath = fs.existsSync('tsconfig.json') + ? 'tsconfig.json' + : undefined + } const project = new Project({ compilerOptions: { allowJs: true,