From 8627b0083257c3af57970b7ada4137127d2fad39 Mon Sep 17 00:00:00 2001 From: Azat S Date: Sun, 9 May 2021 13:53:46 +0300 Subject: [PATCH] feat: add astroturf vite plugin --- src/vite-plugin.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/vite-plugin.ts diff --git a/src/vite-plugin.ts b/src/vite-plugin.ts new file mode 100644 index 00000000..574c152c --- /dev/null +++ b/src/vite-plugin.ts @@ -0,0 +1,36 @@ +import { BabelFileResult, transformSync } from '@babel/core'; + +type ParserPlugin = 'jsx' | 'typescript'; + +export default () => ({ + name: 'vite:astroturf', + enforce: 'pre', + transform: (src: string, id: string): { code: string } => { + if (id.includes('node_modules')) { + return { + code: src, + }; + } + const parserPlugins: ParserPlugin[] = []; + if (/\.(t|j)sx?$/.test(id)) { + parserPlugins.push('jsx'); + } + if (/\.tsx?$/.test(id)) { + parserPlugins.push('typescript'); + } + const result: BabelFileResult | null = transformSync(src, { + babelrc: false, + configFile: false, + filename: id, + parserOpts: { + plugins: parserPlugins, + }, + plugins: ['astroturf/plugin'], + sourceMaps: true, + sourceFileName: id, + }); + return { + code: result?.code || src, + }; + }, +});