diff --git a/src/mkdist.ts b/src/mkdist.ts index 6613246..d856bfc 100644 --- a/src/mkdist.ts +++ b/src/mkdist.ts @@ -1,5 +1,6 @@ import type { SFCBlock, SFCTemplateBlock } from 'vue/compiler-sfc' import type { InputFile, Loader, LoaderContext, LoaderResult, OutputFile } from './types/mkdist' +import process from 'node:process' import { transform } from 'esbuild' import { preTranspileScriptSetup, transpileVueTemplate } from './index' @@ -131,6 +132,23 @@ function defineVueLoader(options?: DefineVueLoaderOptions): Loader { }) .filter(item => !!item) .join('\n') + + // @ts-expect-error internal flag for testing + if (context.options._verify || process.env.VERIFY_VUE_FILES) { + // verify the output + const { parse } = await import('vue/compiler-sfc') + const { errors } = parse(contents, { + filename: input.srcPath, + ignoreEmpty: true, + }) + if (errors.length > 0) { + for (const error of errors) { + console.error(error) + } + return + } + } + addOutput({ path: input.path, srcPath: input.srcPath, diff --git a/test/mkdist.test.ts b/test/mkdist.test.ts index 1cc3cb5..33fc570 100644 --- a/test/mkdist.test.ts +++ b/test/mkdist.test.ts @@ -220,7 +220,12 @@ describe('transform typescript script setup', () => { await rm(tmpDir, { force: true, recursive: true }) await mkdir(join(tmpDir, 'src'), { recursive: true }) await writeFile(join(tmpDir, 'src/index.vue'), src) - await mkdist({ loaders: ['js', vueLoader], rootDir: tmpDir }) + await mkdist({ + loaders: ['js', vueLoader], + rootDir: tmpDir, + // @ts-expect-error internal flag for testing + _verify: true, + }) return await readFile(join(tmpDir, 'dist/index.vue'), 'utf-8') } })