browser-apps/vite.config.ts
2024-12-10 01:49:36 +08:00

63 lines
2.1 KiB
TypeScript

import { defineConfig } from 'vite';
import path from 'path';
// import react from '@vitejs/plugin-react';
import tailwindcss from 'tailwindcss';
import autoprefixer from 'autoprefixer';
import nesting from 'tailwindcss/nesting';
import pkgs from './package.json' with { type: 'json' };
const version = pkgs.version || '0.0.1';
const isDev = process.env.NODE_ENV === 'development';
console.log('isDev', isDev);
export default defineConfig({
root: '.',
css: {
postcss: {
// @ts-ignore
plugins: [nesting, tailwindcss, autoprefixer],
},
},
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
// react: './utils/h.ts', // 将 react 替换为自定义的 JSX 库
// 'react-dom': './utils/h.ts', // 将 react-dom 替换为自定义的 JSX 库
// 上到下,上面的先被匹配
// '@kevisual/store/config': 'https://kevisual.xiongxiao.me/system/lib/web-config.js', // 将本地路径替换为远程 URL
// '@kevisual/store/context': 'https://kevisual.xiongxiao.me/system/lib/web-context.js', // 将本地路径替换为远程 URL
// '@kevisual/store': 'https://kevisual.xiongxiao.me/system/lib/store.js', // 将本地路径替换为远程 URL
// '@kevisual/router/browser': 'https://kevisual.xiongxiao.me/system/lib/router-browser.js', // 将本地路径替换为远程 URL
},
},
base: './',
build: {
minify: false,
outDir: './dist',
rollupOptions: {
external: ['react'],
output: {
chunkFileNames: (chunkInfo) => {
if(isDev) {
return '[name].js';
}
if (chunkInfo.facadeModuleId && chunkInfo.facadeModuleId.includes('/routes/')) {
// 对以 routes/ 开头的代码分块使用不带 hash 的命名
return `routes/[name]-${version}.js`;
}
// 其他代码分块继续使用 hash
return '[name].[hash].js';
},
},
},
},
optimizeDeps: {
exclude: ['react'], // 排除 react 和 react-dom 以避免打包
},
esbuild: {
jsxFactory: 'h',
jsxFragment: 'Fragment',
},
server: {
port: 5002,
},
});