Files
erp-frontend/node/plugins.ts

77 lines
2.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import { resolve } from "path";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
import { createStyleImportPlugin, ElementPlusResolve } from "vite-plugin-style-import";
import eslintPlugin from "vite-plugin-eslint";
import progress from "vite-plugin-progress";
import ServerUrlCopy from "vite-plugin-url-copy";
import vueDevTools from "vite-plugin-vue-devtools";
import { visualizer } from "rollup-plugin-visualizer";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import { configCompressPlugin } from "./compress";
export function getPluginsList(command: string, viteEnv: ImportMetaEnv) {
const lifecycle = process.env.npm_lifecycle_event;
return [
vue(),
vueJsx(),
viteEnv.VITE_DEVTOOLS && vueDevTools(),
eslintPlugin({ cache: false }), // EsLint 报错信息显示在浏览器界面上
ServerUrlCopy({
qrcode: {
disabled: true, // 是否生成二维码
},
}),
progress(),
!viteEnv.VITE_LOAD_ALL_EP_STYLE
? createStyleImportPlugin({
resolves: [ElementPlusResolve()],
libs: [
{
libraryName: "element-plus",
esModule: true,
resolveStyle: name => {
if (!name.startsWith("el-")) return "";
return `element-plus/theme-chalk/src/${name.replace(/^el-/, "")}.scss`;
},
},
],
})
: undefined,
AutoImport({
imports: ["vue", "vue-router", "pinia"], // 自动引入 vue 的 ref、toRefs、onMounted 等,无需在页面中再次引入
dts: "src/types/auto-import.d.ts", // 生成在 src 路径下名为 auto-import.d.ts 的声明文件
eslintrc: {
enabled: false, // 改为 true 用于生成 eslint 配置。生成后改回 false避免重复生成消耗
},
resolvers: !viteEnv.VITE_LOAD_ALL_EP_COMPONENTS ? [ElementPlusResolver()] : [],
}),
!viteEnv.VITE_LOAD_ALL_EP_COMPONENTS
? Components({
resolvers: [ElementPlusResolver({ importStyle: "sass" })],
dirs: "src/components", // 自定引入需要扫描的组件路径
dts: "src/types/auto-components.d.ts", // 生成在 src 路径下名为 auto-components.d.ts 的声明文件
directoryAsNamespace: true,
})
: undefined,
// 使用 svg 图标
createSvgIconsPlugin({
iconDirs: [resolve(process.cwd(), "src/common/assets/icons")],
symbolId: "icon-[dir]-[name]",
}),
viteEnv.VITE_BUILD_GZIP && configCompressPlugin(viteEnv.VITE_COMPRESSION),
// 打包分析
(lifecycle === "report" || viteEnv.VITE_REPORT) &&
visualizer({ open: true, brotliSize: true, filename: "report.html" }),
];
}