vite dev 环境下的配置

这是一个关于Vite配置的博客,涵盖了开发环境设置、Vue插件应用、SVG加载、ESLint集成、压缩优化等内容。通过配置代理实现API请求转发,并在打包时自动生成版本信息。同时,使用了热更新、路径别名和各种插件来提升开发效率和项目性能。
摘要由CSDN通过智能技术生成

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

  }

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值