import { resolve } from 'path'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import svgLoader from 'vite-svg-loader'
import eslint from 'vite-plugin-eslint'
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
import viteCompression from 'vite-plugin-compression'
// import { visualizer } from "rollup-plugin-visualizer"
const fs = require('fs')
const path = require('path')
const config = loadEnv('development', process.cwd())
const baseUrl = config.VITE_APP_BASE_API_PROXY
// console.log('config---',config)
// if(config.VITE_BUILD_ENV==='development' || config.VITE_BUILD_ENV==='release'){
let json_obj = { version_str: new Date().getTime().toString() }
fs.mkdir(path.join(__dirname, '../public/json'), { recursive: true }, err => {
if (err) {
return console.error(err)
}
console.log('创建public文件夹成功')
fs.writeFile(path.resolve(__dirname, '../public/json/version.json'), JSON.stringify(json_obj), function (err) {
if (err) {
return console.error(err)
}
console.log('打包字符串写入文件:static/json/version.json,成功!')
})
})
// }
export default defineConfig({
mode: 'development',
server: {
open: false,
//host: '192.168.0.184',
port: 9529,
fs: {
strict: true
},
hmr: true // 开启热更新
// proxy: {
// '/oms': {
// target: 'http://localhost:7000', // 代理的线上的接口地址
// // 如果要代理 websockets
// ws: true,
// changeOrigin: true,
// rewrite: (path)=>path.replace('/oms/','/')
// },
// "^/[cmsomsbmswmswms]+/api":{
// target: baseUrl,
// ws: true,
// changeOrigin: true,
// // pathRewrite: { //重写路径,这种是没有我们定义的前缀
// // ['^' + process.env.VUE_APP_BASE_API]: ''
// // }
// }
// }
},
plugins: [
vue({
template: {
transformAssetUrls: {
img: ['src', 'public'],
image: ['src', 'public'],
'a-image': ['src', 'xlink:href', 'public']
}
}
}),
vueJsx(),
svgLoader({ svgoConfig: {} }),
// vueSetupExtend(),
viteCompression()
// visualizer({
// open: true, //注意这里要设置为true,否则无效
// gzipSize: true,
// })
],
resolve: {
alias: [
{
find: '@',
replacement: resolve(__dirname, '../src')
},
// {
// find: 'assets',
// replacement: resolve(__dirname, '../src/assets')
// },
{
find: 'vue-i18n',
replacement: 'vue-i18n/dist/vue-i18n.cjs.js' // Resolve the i18n warning issue
},
{
find: 'vue',
replacement: 'vue/dist/vue.esm-bundler.js' // compile template
}
],
extensions: ['.ts', '.js']
},
define: {
'process.env': {}
},
build: {
chunkSizeWarningLimit: 500,
// minify: 'terser',
manifest: true,
cssCodeSplit: false,
// terserOptions: {
// compress: {
// // warnings: false,
// drop_console: true, //打包时删除console
// drop_debugger: true, //打包时删除 debugger
// pure_funcs: ['console.log'],
// },
// output: {
// // 去掉注释内容
// comments: true,
// },
// },
rollupOptions: {
output: {
// 入口文件名
entryFileNames: 'assets/[name]-[hash].js',
// 块文件名
chunkFileNames: 'assets/[name]-[hash].js',
// 资源文件名 css 图片等等
// -[hash]-balabala
assetFileNames: 'assets/[name]-[hash].[ext]',
manualChunks(id: any) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/')[1].split('/')[0].toString()
}
}
}
},
reportCompressedSize: false
}
})