Files
2026-09-21 13:05:37 +08:00

127 lines
3.4 KiB
TypeScript

import { fileURLToPath, URL } from "node:url";
import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { TDesignResolver } from "unplugin-vue-components/resolvers";
const localTimiWebRoot = fileURLToPath(new URL("../timi-web", import.meta.url));
const localTimiWebModule = fileURLToPath(new URL("./src/utils/timiWeb.ts", import.meta.url));
const localTimiWebStyle = fileURLToPath(new URL("../timi-web/dist/timi-web.css", import.meta.url));
const localTimiWebEditor = fileURLToPath(new URL("../timi-web/src/editor/index.ts", import.meta.url));
const localTimiWebApiRoot = fileURLToPath(new URL("../timi-web-api", import.meta.url));
const localTimiWebApiModule = fileURLToPath(new URL("../timi-web-api/dist/index.js", import.meta.url));
const localTimiTsModule = fileURLToPath(new URL("../timi-ts/src/index.ts", import.meta.url));
const localTimiTDesignMobileRoot = fileURLToPath(new URL("../timi-tdesign-mobile", import.meta.url));
const localTimiTDesignMobileModule = fileURLToPath(new URL("../timi-tdesign-mobile/src/index.ts", import.meta.url));
const localTimiTDesignMobileStyle = fileURLToPath(new URL("../timi-tdesign-mobile/dist/timi-tdesign-mobile.css", import.meta.url));
const projectRoot = fileURLToPath(new URL(".", import.meta.url));
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), "");
const useLocalTimiWeb = env.VITE_USE_LOCAL_TIMI_WEB !== "false";
const useLocalTimiTDesignMobile = env.VITE_USE_LOCAL_TIMI_TDESIGN_MOBILE !== "false";
return {
resolve: {
dedupe: ["vue", "pinia", "vue-router"],
alias: [
{
find: "@",
replacement: fileURLToPath(new URL("./src", import.meta.url))
},
...(useLocalTimiWeb
? [
{
find: /^timi-web$/,
replacement: localTimiWebModule
},
{
find: /^timi-web\/editor$/,
replacement: localTimiWebEditor
},
{
find: /^timi-web\/style\.css$/,
replacement: localTimiWebStyle
}
]
: []),
{
find: /^timi-web-api$/,
replacement: localTimiWebApiModule
},
{
find: /^timi-web-api\//,
replacement: `${localTimiWebApiRoot}/dist/`
},
...(useLocalTimiWeb
? [
{
find: /^timi-ts$/,
replacement: localTimiTsModule
}
]
: []),
...(useLocalTimiTDesignMobile
? [
{
find: /^timi-tdesign-mobile$/,
replacement: localTimiTDesignMobileModule
},
{
find: /^timi-tdesign-mobile\/style\.css$/,
replacement: localTimiTDesignMobileStyle
}
]
: [])
]
},
plugins: [
vue(),
AutoImport({
imports: ["vue", "vue-router", "pinia"],
dts: "auto-imports.d.ts",
eslintrc: {
enabled: true,
filepath: "./.eslintrc-auto-import.json",
globalsPropValue: true
},
resolvers: [
TDesignResolver({
library: "mobile-vue"
})
]
}),
Components({
dirs: ["src/components", "src/layout"],
dts: "components.d.ts",
resolvers: [
TDesignResolver({
library: "mobile-vue"
})
]
})
],
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true
}
}
},
server: {
port: 84,
allowedHosts: [
"gao.imyeyu.com"
],
fs: {
allow: [
projectRoot,
localTimiWebRoot,
localTimiWebApiRoot,
localTimiTDesignMobileRoot
]
}
}
};
});