✨ init Project
This commit is contained in:
113
vite.config.js
Normal file
113
vite.config.js
Normal file
@@ -0,0 +1,113 @@
|
||||
import legacyPlugin from '@vitejs/plugin-legacy'
|
||||
import Banner from 'vite-plugin-banner'
|
||||
import * as path from 'path'
|
||||
import * as dotenv from 'dotenv'
|
||||
import * as fs from 'fs'
|
||||
import vuePlugin from '@vitejs/plugin-vue'
|
||||
import vueDevTools from 'vite-plugin-vue-devtools'
|
||||
import VueFilePathPlugin from './vitePlugin/componentName/index.js'
|
||||
import { svgBuilder } from 'vite-auto-import-svg'
|
||||
import { AddSecret } from './vitePlugin/secret'
|
||||
// @see https://cn.vitejs.dev/config/
|
||||
export default ({ mode }) => {
|
||||
AddSecret('')
|
||||
const NODE_ENV = mode || 'development'
|
||||
const envFiles = [`.env.${NODE_ENV}`]
|
||||
for (const file of envFiles) {
|
||||
const envConfig = dotenv.parse(fs.readFileSync(file))
|
||||
for (const k in envConfig) {
|
||||
process.env[k] = envConfig[k]
|
||||
}
|
||||
}
|
||||
|
||||
const timestamp = Date.parse(new Date())
|
||||
|
||||
const optimizeDeps = {}
|
||||
|
||||
const alias = {
|
||||
'@': path.resolve(__dirname, './src'),
|
||||
vue$: 'vue/dist/vue.runtime.esm-bundler.js'
|
||||
}
|
||||
|
||||
const esbuild = {}
|
||||
|
||||
const rollupOptions = {
|
||||
output: {
|
||||
entryFileNames: 'assets/087AC4D233B64EB0[name].[hash].js',
|
||||
chunkFileNames: 'assets/087AC4D233B64EB0[name].[hash].js',
|
||||
assetFileNames: 'assets/087AC4D233B64EB0[name].[hash].[ext]'
|
||||
}
|
||||
}
|
||||
|
||||
const config = {
|
||||
base: '/', // 编译后js导入的资源路径
|
||||
root: './', // index.html文件所在位置
|
||||
publicDir: 'public', // 静态资源文件夹
|
||||
resolve: {
|
||||
alias
|
||||
},
|
||||
define: {
|
||||
'process.env': {}
|
||||
},
|
||||
css: {
|
||||
preprocessorOptions: {
|
||||
scss: {
|
||||
api: 'modern-compiler' // or "modern"
|
||||
}
|
||||
}
|
||||
},
|
||||
server: {
|
||||
// 如果使用docker-compose开发模式,设置为false
|
||||
open: true,
|
||||
port: process.env.VITE_CLI_PORT,
|
||||
proxy: {
|
||||
// 把key的路径代理到target位置
|
||||
// detail: https://cli.vuejs.org/config/#devserver-proxy
|
||||
[process.env.VITE_BASE_API]: {
|
||||
// 需要代理的路径 例如 '/api'
|
||||
target: `${process.env.VITE_BASE_PATH}:${process.env.VITE_SERVER_PORT}/`, // 代理到 目标路径
|
||||
changeOrigin: true,
|
||||
rewrite: (path) =>
|
||||
path.replace(new RegExp('^' + process.env.VITE_BASE_API), '')
|
||||
}
|
||||
},
|
||||
allowedHosts: ['all','lckt.echol.top'],
|
||||
},
|
||||
build: {
|
||||
minify: 'terser', // 是否进行压缩,boolean | 'terser' | 'esbuild',默认使用terser
|
||||
manifest: false, // 是否产出manifest.json
|
||||
sourcemap: false, // 是否产出sourcemap.json
|
||||
outDir: 'dist', // 产出目录
|
||||
terserOptions: {
|
||||
compress: {
|
||||
//生产环境时移除console
|
||||
drop_console: true,
|
||||
drop_debugger: true
|
||||
}
|
||||
},
|
||||
rollupOptions
|
||||
},
|
||||
esbuild,
|
||||
optimizeDeps,
|
||||
plugins: [
|
||||
process.env.VITE_POSITION === 'open' &&
|
||||
vueDevTools({ launchEditor: process.env.VITE_EDITOR }),
|
||||
legacyPlugin({
|
||||
targets: [
|
||||
'Android > 39',
|
||||
'Chrome >= 60',
|
||||
'Safari >= 10.1',
|
||||
'iOS >= 10.3',
|
||||
'Firefox >= 54',
|
||||
'Edge >= 15'
|
||||
]
|
||||
}),
|
||||
vuePlugin(),
|
||||
svgBuilder('./src/assets/icons/'),
|
||||
svgBuilder('./src/plugin/'),
|
||||
[Banner(`\n Build based on gin-vue-admin \n Time : ${timestamp}`)],
|
||||
VueFilePathPlugin('./src/pathInfo.json')
|
||||
]
|
||||
}
|
||||
return config
|
||||
}
|
Reference in New Issue
Block a user