1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import fs from 'node:fs'
- import path from 'node:path'
- import { defineConfig, loadEnv } from 'vite'
- import dayjs from 'dayjs'
- import pkg from './package.json'
- import createVitePlugins from './vite/plugins'
- // https://vitejs.dev/config/
- export default async ({ mode, command }) => {
- const env = loadEnv(mode, process.cwd())
- // 全局 scss 资源
- const scssResources = []
- fs.readdirSync('src/assets/styles/resources').forEach((dirname) => {
- if (fs.statSync(`src/assets/styles/resources/${dirname}`).isFile()) {
- scssResources.push(`@use "src/assets/styles/resources/${dirname}" as *;`)
- }
- })
- // css 精灵图相关
- fs.readdirSync('src/assets/sprites').forEach((dirname) => {
- if (fs.statSync(`src/assets/sprites/${dirname}`).isDirectory()) {
- // css 精灵图生成的 scss 文件也需要放入全局 scss 资源
- scssResources.push(`@use "src/assets/sprites/_${dirname}.scss" as *;`)
- }
- })
- return defineConfig({
- base: './',
- // 开发服务器选项 https://cn.vitejs.dev/config/#server-options
- server: {
- open: true,
- port: 9000,
- proxy: {
- '/proxy': {
- target: env.VITE_APP_API_BASEURL,
- changeOrigin: command === 'serve' && env.VITE_OPEN_PROXY === 'true',
- rewrite: path => path.replace(/\/proxy/, ''),
- },
- },
- },
- // 构建选项 https://cn.vitejs.dev/config/#server-fsserve-root
- build: {
- outDir: mode === 'production' ? 'dist' : `dist-${mode}`,
- sourcemap: env.VITE_BUILD_SOURCEMAP === 'true',
- },
- define: {
- __SYSTEM_INFO__: JSON.stringify({
- pkg: {
- dependencies: pkg.dependencies,
- devDependencies: pkg.devDependencies,
- },
- lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
- }),
- },
- plugins: createVitePlugins(env, command === 'build'),
- resolve: {
- alias: {
- '@': path.resolve(__dirname, 'src'),
- '#': path.resolve(__dirname, 'src/types'),
- },
- },
- css: {
- preprocessorOptions: {
- scss: {
- additionalData: scssResources.join(''),
- },
- },
- },
- })
- }
|