123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import dayjs from "dayjs";
- import { resolve } from "path";
- import pkg from "./package.json";
- import { warpperEnv, regExps } from "./build";
- import { getPluginsList } from "./build/plugins";
- import { UserConfigExport, ConfigEnv, loadEnv } from "vite";
- import zipPack from "vite-plugin-zip-pack";
- import { createHash } from "crypto"
- // 当前执行node命令时文件夹的地址(工作目录)
- const root: string = process.cwd();
- // 路径查找
- const pathResolve = (dir: string): string => {
- return resolve(__dirname, ".", dir);
- };
- // 设置别名
- const alias: Record<string, string> = {
- "/@": pathResolve("src"),
- "@build": pathResolve("build"),
- "@views": pathResolve("src/views")
- };
- const { dependencies, devDependencies, name, version } = pkg;
- const __APP_INFO__ = {
- pkg: { dependencies, devDependencies, name, version },
- lastBuildTime: dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss")
- };
- export default ({ command, mode }: ConfigEnv): UserConfigExport => {
- const {
- VITE_PORT,
- VITE_LEGACY,
- VITE_PUBLIC_PATH,
- VITE_PROXY_DOMAIN,
- VITE_PROXY_DOMAIN_REAL
- } = warpperEnv(loadEnv(mode, root));
- return {
- base: VITE_PUBLIC_PATH,
- root,
- resolve: {
- alias
- },
- // 服务端渲染
- server: {
- // 是否开启 https
- https: false,
- // 端口号
- port: VITE_PORT,
- host: "0.0.0.0",
- // 本地跨域代理
- proxy:
- VITE_PROXY_DOMAIN_REAL.length > 0
- ? {
- [VITE_PROXY_DOMAIN]: {
- target: VITE_PROXY_DOMAIN_REAL,
- // ws: true,
- changeOrigin: true,
- rewrite: (path: string) => regExps(path, VITE_PROXY_DOMAIN)
- }
- }
- : null
- },
- plugins: [ ...getPluginsList(command, VITE_LEGACY)
- // zipPack({
- // inDir:'dist',
- // outFileName:'build.zip',
- // pathPrefix:''
- // })
- ],
- optimizeDeps: {
- include: ["pinia", "lodash-es", "@vueuse/core"],
- exclude: ["@pureadmin/theme/dist/browser-utils"]
- },
- build: {
- rollupOptions: {
- output: {
- entryFileNames: 'assets/[name].js',
- chunkFileNames: chunkInfo => {
- if (chunkInfo.isDynamicEntry) {
- const hash = createHash('sha256')
- .update(Object.values(chunkInfo.modules).map(m => m.code).join())
- .digest('hex')
- .substr(0, 6)
- return 'assets/[name].' + hash + '.js'
- } else {
- return 'assets/[name].[hash].js'
- }
- }
- },
-
- }
- },
- define: {
- __INTLIFY_PROD_DEVTOOLS__: false,
- __APP_INFO__: JSON.stringify(__APP_INFO__)
- }
- };
- };
|