63 lines
1.8 KiB
TypeScript
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),
|
||
|
};
|
||
|
});
|