vite-bolt/vite.config.ts
2023-02-01 17:52:53 +08:00

63 lines
1.8 KiB
TypeScript

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),
};
});