Vite | 青训营笔记

33 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天

1. 概览

vite新一代前端构建工具, 由两大组成部分:

1.No-bundle 开发服务, 源文件无需打包

2.生产环境基于Rollup的Bundler

核心特征:

  • 高性能,dev启动速度和热更新速度非常快!
  • 简单易用,开发者体验好

vite集成了(开箱即用):

  • webpack
  • webpack-dev-server
  • css-loader
  • style-loader
  • less-loader
  • sass-loader
  • postcss-loader
  • flie-loader
  • HTMLWebpackPlugin
  • ...

webpack配置:

export default {
  entry: './src/index.ts',
  module: {
    rules: [
      {
        test: /\.[tj]sx?$/,
        use: [
          {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env', '@babel/preset-typescript'],
            },
          },
        ],
      },
      {
        test: /\.s[ac]ss$/,
        use: [
          process.env.NODE_ENV === 'production' ? MinCssExtractPlugin.loader : 'style-loader',
          {
            loader: 'css-loader',
            options: {
              module: true,
            },
          },
          'postcss-loader',
          'sass-loader',
        ],
      },
      {
        test: /\.css$/,
        use: [
          process.env.NODE_ENV === 'production' ? MinCssExtractPlugin.loader : 'style-loader',
          {
            loader: 'css-loader',
            options: {
              moodule: true,
            },
          },
          'postcss-loader',
        ],
      },
    ],
  },
  plugins: [new MinCssExtractPlugin(), new HTMLWebpackPlugin()],
}

等价于 vite

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
})

官方文档:vite

2. 使用vite

2.1 开始

安装pnpm

npm i -g pnpm

初始化命令

pnpm create vite

安装依赖

pnpm install

启动项目

npm run dev

2.2 使用sass

安装sass

pnpm i sass -D

编写代码

import styles from './index.module.scss'
import { FC } from 'react'

export const Header: FC = ({}) => {
  return <p className={styles.header}>This is Header</p>
}

使用Header插件

import {Header} from './components/Header';
import logoUrl from './logo.svg'

function App(){
    return (
        <div>
            <Header/>
            <img src={logoUrl} alt=""/>
        </div>
}
export default App;

除了常见的图片格式,Vite也内置了对与JSON, Worker, WASM资源的加载支持

vite 也支持HMR,无需配置默认自带

vite也支持Tree Shaking,再构建是将未使用的奥的代码进行删除, 同样无需配置,默认开启

3. vite 整体架构

QQ截图20230210200405.png

vite会将文件编译成ESM所以不支持类型检查, 也不支持语法降级到ES5

使用ESbuild 作为默认压缩工具, 替代传统的Terser, Uglify.js 等压缩工具

QQ截图20230210200808.png

参考资料:

esbuild文档

rollup