美文网首页
vite 构建 不同环境

vite 构建 不同环境

作者: 前端早晚自习 | 来源:发表于2024-02-05 11:36 被阅读0次

之前项目大部分把打包配置揉在一个文件, dev、预发布、生成环境都共用一个配置,或根据变量判断, 这几个一直在优化项目通过 mergeConfig 合并不同的配置

目录结构

image.png

基础配置

import { resolve } from 'path';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import svgLoader from 'vite-svg-loader';

export default defineConfig({
  plugins: [vue(), vueJsx(), svgLoader({ svgoConfig: {} })],
  resolve: {
    alias: [
      {
        find: '@',
        replacement: resolve(__dirname, '../src'),
      },
      {
        find: 'assets',
        replacement: resolve(__dirname, '../src/assets'),
      },

      {
        find: 'vue',
        replacement: 'vue/dist/vue.esm-bundler.js', // compile template
      },
    ],
    extensions: ['.ts', '.js'],
  },
  define: {
    'process.env': {},
  },
  css: {
    preprocessorOptions: {
      less: {
        modifyVars: {
          hack: `true; @import (reference) "${resolve(
            'src/assets/style/breakpoint.less'
          )}";`,
        },
        javascriptEnabled: true,
      },
    },
  },
});

生产环境和dev 环境

dev


import { mergeConfig } from 'vite';
import eslint from 'vite-plugin-eslint';
import baseConfig from './vite.config.base';
import createSvgIcon from './plugin/svg-icon';

export default mergeConfig(
  {
    mode: 'development',
    server: {
      open: true,
  
    },
    plugins: [
      eslint({
        cache: false,
        include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'],
        exclude: ['node_modules'],
      }),
      createSvgIcon(false),
    ],
  },
  baseConfig
);



生产

import { mergeConfig } from 'vite';
import baseConfig from './vite.config.base';
import configCompressPlugin from './plugin/compress';
import configVisualizerPlugin from './plugin/visualizer';
import configArcoResolverPlugin from './plugin/arcoResolver';
import configStyleImportPlugin from './plugin/styleImport';
import configImageminPlugin from './plugin/imagemin';
import createSvgIcon from './plugin/svg-icon';

export default mergeConfig(
  {
    mode: 'production',
    plugins: [
      configCompressPlugin('gzip'),
      configVisualizerPlugin(),
      configArcoResolverPlugin(),
      configStyleImportPlugin(),
      configImageminPlugin(),
      createSvgIcon(true),
    ],
    build: {
      rollupOptions: {
        output: {
          manualChunks: {
            arco: ['@arco-design/web-vue'],
            chart: ['echarts', 'vue-echarts'],
            vue: ['vue', 'vue-router', 'pinia', '@vueuse/core', 'vue-i18n'],
          },
        },
      },
      chunkSizeWarningLimit: 2000,
    },
  },
  baseConfig
);

package.json

  "scripts": {
    "dev": "vite --config ./config/vite.config.dev.ts",
    "build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts",
    "report": "cross-env REPORT=true npm run build",
    "preview": "npm run build && vite preview --host",
 
  },

最后

这种代码组织方式结构清晰, 做到了低耦合, 可扩展性也高。。本文主要是让自己,通过某个功能对自己代码进行review和重实现来提高代码质量,希望各位大佬多多指点

相关文章

  • 如何创建一个React项目(构建工具webpack 与 Vite

    一、使用通用构建工具 Vite Vite 本身就是一个构建工具,开发环境下不打包,生成环境使用 Rollup 进行...

  • vue3.0+vite+typescipt

    vite是什么 vite 是一个由原生 ESM 驱动的 Web 开发构建工具。在开发环境下基于浏览器原生 ES i...

  • 前端技术分享

    vite vite 是神马? Vite (法语意为 "快速的",发音 /vit/) 是一种新型前端构建工具,能够显...

  • vite+ts+vue3项目构建

    title: vite+ts+vue3项目构建date: 2022-06-09description: vite+...

  • vite+react简单搭建

    局部安装vite 全局安装vite 使用 安装完成之后运行: 可以配置.env的开发环境、测试环境、生产环境 配置...

  • vite2+vue3踩坑

    Vite[https://vitejs.cn/guide/why.html] vite简单来说是一个快速的构建工具...

  • vite 学习笔记

    参考文章[https://vite-design.surge.sh/] 背景 Vite是一个构建工具,旨在为现代w...

  • Vite学习笔记

    Vite的定义 Vite是一种新型前端构建工具,基于ECMAScript标准原生模块系统(ES Modules)能...

  • Vite3 + Svelte3构建Web应用报错:'proces

    Vite爬坑日记: 在使用 Vite3 + Svelte3 构建 Web 应用时,控制台报错:process is...

  • vite 自带常用功能

    vite 自带的功能: vite 具备 NPM 依赖解析 和 预构建 依赖: 是强缓存依赖,通过HTTP头来缓存请...

网友评论

      本文标题:vite 构建 不同环境

      本文链接:https://www.haomeiwen.com/subject/nqsqadtx.html