import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import Bolt from "./plugin/vite-plugin-bolt"; import rehypePrism from "@mapbox/rehype-prism"; import { build } from "./plugin/build/vite.conf"; import dts from "vite-plugin-dts"; import BoltConfig from "./bolt.config"; // https://vitejs.dev/config/ export default defineConfig(async ({ mode }): Promise<{}> => { const mdx = await import("@mdx-js/rollup"); return { server: { watch: { ignored: ["!**/dist/**"], }, }, plugins: [ process.env.MODE !== "production" ? react({ jsxRuntime: "classic", }) : react(), mdx.default({ jsxRuntime: "automatic", providerImportSource: "@mdx-js/react", rehypePlugins: [rehypePrism], // syntax highlight会compile pre > code remarkPlugins: [], }), Bolt({ config: BoltConfig }), mode === "lib" && dts({ entryRoot: "src", outputDir: "dist/ui", }), mode !== "doc" && { name: "style", generateBundle(config, bundle) { //这里可以获取打包后的文件目录以及代码code const keys = Object.keys(bundle); for (const key of keys) { const bundler: any = bundle[key as any]; //rollup内置方法,将所有输出文件code中的.less换成.css //TODO 导致sourcemap 文件丢失,待解决 this.emitFile({ type: "asset", fileName: key, //文件名名不变 source: bundler.code.replace(/\.less/g, ".css"), }); } }, }, ].filter(Boolean), resolve: { alias: { "@bolt/config": "virtual:@vite/plugin-bolt", "@": "src", }, }, build: build(mode), }; });