Vite,一种新型前端构建工具,显著提升前端开发体验
主要功能:
开发服务器,基于原生 ES 模块提供了 丰富的内建功能,实现快速模板热更新
构建指令,使用 Rollup 打包代码,预配置、可输出用于生产环境的高度优化过的静态资源

全局安装Vite

  1. npm install vite-create-app -g

Vite快速搭建Vue3项目

  1. npm init vite-app <project-name>
  2. cd <project-name>
  3. npm install
  4. npm run dev

搭建第一个Vite项目

  1. # npm 安装
  2. npm create vite@latest
  3. # yarn 安装
  4. yarn create vite
  5. # pnpm 安装
  6. pnpm create vite
  1. # npm 6.x
  2. npm create vite@latest my-vue-app --template vue
  3. # npm 7+ 需要额外两个破折号
  4. npm create vite@latest my-vue-app -- --template vue
  5. # yarn
  6. yarn create vite my-vue-app --template vue
  7. # pnpm
  8. pnpm create vite my-vue-app -- --template vue

功能

CSS

CSS Modules

任何以.module.css为后缀的 css 文件都被认为是一个 CSS modules 文件。导入这样的文件会返回一个相应的模块对象:

  1. .red {
  2. color: red;
  3. }
  1. import classes from './example.module.css'
  2. document.getElementById('foo').className = classes.red
  1. `css.modules.localsConvention` 设置开启了 camelCase 格式变量名转换(例:`localsConvetion: 'camelCaseOnly')`
  1. // .apply-color -> applyColor
  2. import { applyCOlor } from './example.module.css'
  3. document.getElementById('foo').className = applyColor

CSS 预处理器

vite 提供了对 .scss.sass.less.styl.stylus文件的内置支持,无需安装特定的 Vite 插件,但需安装相应的预处理器依赖:

  1. # .scss and .sass
  2. npm add -D sass
  3. # .less
  4. npm add -D less
  5. # .styl and .stylus
  6. npm add -D stylus

项目配置

创建 vite.config.js 文件

  1. // vite.config.js 配置
  2. const path = require('path')
  3. module.exports = {
  4. alias: {
  5. // 路径映射必须以 / 开头和结尾
  6. "/comps": path.resolve(__dirname, "src/components")
  7. }
  8. }
  9. // 使用
  10. import CourseAdd from '/comps/CourseAdd.vue'
  11. import Comp from '/comps/Comp.vue'
  1. // vite.config.js 配置
  2. export default {
  3. proxy: {
  4. '/api': {
  5. target: 'http://jsonplaceholder.typicode.com',
  6. changeOrigin: true,
  7. rewrite: path => path.replace(/^\/api/, '')
  8. }
  9. }
  10. }
  11. // 使用
  12. fetch("/api/users")
  13. .then(response => response.json())
  14. .then(json => console.log(json))
  1. // 安装
  2. npm i mockjs -S
  3. npm i vite-plugin-mock cross-env -D
  4. // vite.config.js 引入插件
  5. plugins: [
  6. createMockServer({
  7. // 关闭支持 .ts 文件
  8. supportTs: false
  9. })
  10. ]
  11. // package.json 设置环境变量
  12. "dev": "cross-env NODE_ENV=development vite"
  13. // 创建 mock 文件, mock/test.js
  14. export default [
  15. {
  16. url: "/api/users",
  17. method: "get",
  18. response: req => {
  19. return {
  20. code: 0,
  21. data: [
  22. {
  23. name: "tom",
  24. },
  25. {
  26. name: "jerry",
  27. },
  28. ],
  29. };
  30. },
  31. },
  32. {
  33. url: "/api/post",
  34. method: "post",
  35. timeout: 2000,
  36. response: {
  37. code: 0,
  38. data: {
  39. name: "vben",
  40. },
  41. },
  42. },
  43. ];
  1. // 使用模式做多环境配置,vite serve 时模式默认是 development,vite build 时时 production
  2. // 创建配置文件 .env.development
  3. VITE_TOKEN = this is token
  4. // 代码中读取
  5. import.meta.env.VITE_TOKEN

打包和部署

打包

  1. npm run build

部署

  1. 配置 workflow,在项目根目录下创建 .github/workflows/publish.yml ```yaml name: 打包应用并上传阿里云

on: push: branches:

  1. - master

jobs: build:

  1. # runs-on 指定 job 任务运行所需要的虚拟机环境(必填字段)
  2. runs-on: ubuntu-latest
  3. steps:
  4. # 获取源码
  5. - name: 迁出代码
  6. # 使用 action 库 action/checkout 获取源码
  7. uses: actions/checkout@master
  8. # 安装 Node10
  9. - name: 安装 node.js
  10. # 使用 action 库 actions/setup-node 安装 node
  11. uses: actions/setup-node@v1
  12. with:
  13. node-version: 14.0.0
  14. # 安装依赖
  15. - name: 安装依赖
  16. run: npm install
  17. # 打包
  18. - name: 打包
  19. run: npm run build
  20. # 上传阿里云
  21. - name: 发布到阿里云
  22. uses: easingthemes/ssh-deploy@2.1.1
  23. env:
  24. # 私钥
  25. SSH_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
  26. # scp 参数
  27. ARGS: "-avzr --delete"
  28. # 源目录
  29. SOURCE: "dist"
  30. # 服务器ip:换成你的服务器IP
  31. REMOTE_HOST: "47.98.252.43"
  32. # 用户
  33. REMOTE_USER: "root"
  34. # 目标地址
  35. TARGET: "/root/vue-in-action"
  1. 2. `github`当前项目下设置私钥选项
  2. ![](https://cdn.nlark.com/yuque/0/2022/webp/22832478/1649332809585-7416f191-c5ae-40cd-9e39-0b80b55c5176.webp#clientId=ub27dfb66-0d0b-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ub5743632&margin=%5Bobject%20Object%5D&originHeight=582&originWidth=1304&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u00b7f4eb-fbd3-49a5-bf1d-2f7196d2d59&title=)
  3. ```bash
  4. # ssh 密钥生成过程自行百度
  5. cd .ssh/
  6. cat id_rsa
  7. # 复制并填写到 github-secretes
  1. 阿里云服务器配置 nginx ```bash

    登录服务器

    ssh root@47.98.252.43 # ip换成自己的

配置 nginx

cd /etc/nginx/sites-enabled/ vi vue-inaction

添加如下配置

server { listen 8080; server_name 47.98.252.43; location / { root /root/vue-in-action/dist; index index.html index.htm; } } ```

  1. push代码,触发workflow

Vite - 图1