Vue 2 中,使用Vite作为前端构建开发工具,替代webpack(一)——vite.config.js配置文件

Vue 2 中,使用Vite作为前端构建开发工具,替代webpack(一)——vite.config.js配置文件

当前版本 vite@2.3.7vite@2.4.4

"vite": "^2.4.4",
一、 适合什么项目迁移
  1. 使用 vue2 的系统
  2. 内部系统 - 无需大型流量场景:因为 vite 更迭较快,导致系统需要定期改动基础功能,造成不稳定
  3. 非 ssr 系统 - ssr 还有很多问题,暂且等社区丰富起来
  4. 定期有人维护的系统
  5. 对开发有痛点而想要改进:比如打包慢,冷启动慢,HMR 更新慢。。。。
  6. vite 生产环境用 rollup,但是改造成本大,提效不高,风险大,暂不建议使用。
二、迁移步骤

将会以内部系统作为案例改造, 开发用 vite,生产依旧保持 webpack。

  1. 简单了解 vite 特性。有问题优先看vite 官网排查是否有更新或解决方案!!
  2. npm i vite@2.3.7 vite-plugin-vue2@1.6.2 vite-plugin-html@2.0.7 -D
  3. package.json 添加一个 script – “vite”: “NODE_ENV=development vite”
  4. 关键在于配置 vite.config.js【默认叫做这个文件名,可配置成其他的】
根目录下,vite.config.js配置文件
import { defineConfig } from 'vite';
import path from 'path';
import fs from 'fs';
 
import { createVuePlugin } from 'vite-plugin-vue2';
import { injectHtml, minifyHtml } from 'vite-plugin-html';
import { cjs2esmVitePlugin } from 'cjs2esmodule'
import dotenv from 'dotenv'
const config = require('./config')
 
try {
  // 根据环境变量加载环境变量文件
  const file = dotenv.parse(fs.readFileSync(`./config/.env.${process.env.NODE_ENV}`), {
    debug: true
  })
  console.log(file)
  // 根据获取的 key 给对应的环境变量赋值
  for (const key in file) {
    process.env[key] = file[key]
  }
} catch (e) {
  console.error(e)
}
const API_LOCATION = process.env.API_LOCATION || '/api'
 
function resolve(dir) {
  return path.join(__dirname, './', dir)
}
export default defineConfig({
  root: './', // 项目根目录(index.html 文件所在的位置)可以是一个绝对路径,或者一个相对于该配置文件本身的相对路径。
  publicDir: 'public', // 作为静态资源服务的文件夹.该值可以是文件系统的绝对路径,也可以是相对于项目的根目录的相对路径。
  base: './', // 公共基础路径。改值可以是绝对路径或空字符串
  mode: 'development',
  optimizeDeps: { // 要预构建的第三方依赖
    include: []
  },
  resolve: {
    alias: {
      // 'vue': 'vue/dist/vue.esm.js', // 如果是模板解析的 - 使用这个 vue:内部为正则表达式  vue 结尾的
      'vendor': resolve('src/vendor'),
      '@': resolve('src'),
      '~@': resolve('src'),
      '~component': resolve('src/components'),
      '~config': resolve('config'),
    }
  },
  plugins: [
    cjs2esmVitePlugin(), // 将 commonjs 转化为 es module: 有报错
    createVuePlugin({
      jsx: true,
      jsxOptions: {
        injectH: false,
      },
    }),
    minifyHtml(), // 压缩 HTML
    injectHtml({ // 入口文件 index.html 的模板注入
      injectData: { // 模板注入的数据
        htmlWebpackPlugin: {
          options: {
            isVite: true,
            shotcut: '/static/img/favicon.png',
          }
        },
        title: 'HMO 运营后台',
      },
    }),
  ],
  define: {
    'process.env': process.env
  },
  server: {
    host: 'liang.myweb.com',
    open: true, // 是否自动打开浏览器
    port: process.env.PORT || config.dev.port,
    proxy: {
      [API_LOCATION]: {
        target: 'http://127.0.0.1:8001',
        rewrite: (path) => path.replace(API_LOCATION, '')
      }
      
    }
  },
});
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 项目,我们通常使用 Vue CLI 来创建和配置项目,而不是手动修改 webpack 配置文件Vue CLI 会自动生成一份 webpack 配置文件,我们可以通过 `vue.config.js` 文件来修改这份配置。 如果你还是想手动修改 webpack 配置文件,那么可以按照以下步骤进行操作: 1. 安装 `@vue/cli-service` 和 `@vue/compiler-sfc`: ``` npm install --save-dev @vue/cli-service @vue/compiler-sfc ``` 2. 在项目根目录下创建一个 `webpack.config.ts` 文件,并添加以下内容: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [ vue() ], resolve: { alias: { 'vue': '@vue/runtime-dom' } } }) ``` 上面的配置,我们使用了 `vite` 的 `defineConfig` 函数来定义配置,引入了 `@vitejs/plugin-vue` 插件以支持 Vue 单文件组件的编译和解析,同时通过 `alias` 配置将 `vue` 模块指向了 `@vue/runtime-dom`。 3. 修改 `package.json` 文件的 `scripts` 字段,添加以下内容: ```json "scripts": { "serve": "vue-cli-service serve --config webpack.config.ts", "build": "vue-cli-service build --config webpack.config.ts" } ``` 上面的配置,我们使用了 `vue-cli-service` 命令来启动开发服务器和构建项目,并通过 `--config` 选项指定了使用我们自己定义的 webpack 配置文件。 现在你就可以通过 `npm run serve` 启动开发服务器,或者通过 `npm run build` 构建项目了。请注意,手动修改 webpack 配置文件可能会导致一些不兼容的问题,建议在修改之前备份原有的配置文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值