原本的 vite.config.ts
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
}
})
plugins 分离出来后
vite.config.ts
import {ConfigEnv, defineConfig, loadEnv} from 'vite'
import {createVitePlugins} from "./build/plugin";
import {resolve} from "node:path";
// https://vitejs.dev/config/
export default defineConfig(({mode}: ConfigEnv) => {
const env = loadEnv(mode, process.cwd(), '')
return {
base: "/",
plugins: createVitePlugins(),
resolve: {
alias: {
'@': resolve(__dirname, 'src')
}
}
}
})
build/plugin/index.ts
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
export function createVitePlugins() {
const plugins: any[] = [
vue(),
vueJsx(),
]
return plugins
}
tsconfig.node.json
中 "include"
增加 "build/**/*.ts"
{
"extends": "@tsconfig/node20/tsconfig.json",
"include": [
"vite.config.*",
"vitest.config.*",
"cypress.config.*",
"nightwatch.conf.*",
"playwright.config.*",
"build/**/*.ts" <------- 这里
],
"compilerOptions": {
"composite": true,
"noEmit": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
"module": "ESNext",
"moduleResolution": "Bundler",
"types": ["node","vite/client"],
}
}