UNPKG

beesbuild

Version:

构建工具链

65 lines (64 loc) 2.04 kB
import { createParsedCommandLine, createVueLanguagePlugin, getAllExtensions } from "@vue/language-core"; import { mergeWith } from "lodash-unified"; import { existsSync, mkdirSync } from "fs-extra"; import { runTsc } from "@volar/typescript/lib/quickstart/runTsc"; import { handleTypeOption } from "./utils.mjs"; function runVueTsc(ctx, _options) { const { outRootDir, compilerOptions, tsConfigFilePath, rootDir } = handleTypeOption(ctx); const extensionsChangedException = new Error("extensions changed"); const windowsPathReg = /\\/g; let runExtensions = [".vue"]; const tscPath = require.resolve("typescript/lib/tsc"); runTsc(tscPath, runExtensions, (ts, options) => { const { configFilePath = tsConfigFilePath } = options.options; const config = createParsedCommandLine( ts, ts.sys, configFilePath.replace(windowsPathReg, "/") ); const vueOptions = config.vueOptions; console.log(config.options); const allExtensions = getAllExtensions(vueOptions); const mergeCompilerOptions = mergeWith( compilerOptions, options.options, config.options, { noEmit: false, project: configFilePath, rootDir, outDir: outRootDir } ); console.log(mergeCompilerOptions, "vueOptions"); if (runExtensions.length === allExtensions.length && runExtensions.every((ext) => allExtensions.includes(ext))) { const vueLanguagePlugin = createVueLanguagePlugin( ts, mergeCompilerOptions, vueOptions, (id) => id ); return { languagePlugins: [vueLanguagePlugin] }; } else { runExtensions = allExtensions; throw extensionsChangedException; } }); } function vueTsc(ctx, _options) { const { output, typesCacheDir } = handleTypeOption(ctx); const declarationDir = typesCacheDir != null ? typesCacheDir : output.path; if (!existsSync(declarationDir)) { mkdirSync(declarationDir, { recursive: true }); } runVueTsc(ctx); } export { vueTsc };