关于vite:如何快速从零开始搭建一个前端项目

32次阅读

共计 4301 个字符,预计需要花费 11 分钟才能阅读完成。

2022 年了,如何疾速从零开始搭建一个适合的前端我的项目?

筹备工作

首先本地须要装置好 node 环境以及包管理工具,举荐间接应用 pnpm,也能够通过 pnpm 来间接治理 nodejs 版本。

pnpm 装置:

# Mac or Linux
curl -fsSL https://get.pnpm.io/install.sh | sh -

# Windows
iwr https://get.pnpm.io/install.ps1 -useb | iex

应用 pnpm 装置 nodejs 的 LTS 版本:

pnpm env use --global lts

我的项目搭建

这里咱们以搭建一个 React + TypeScript 我的项目为例

脚手架

脚手架方面,新我的项目能够思考间接应用 vite,咱们通过以下命令创立一个基于 vite 的初始化我的项目:

pnpm create vite my-react-app --template react-ts

进入目录能够看到如下的构造:

.
├── public
├── src
├── index.html
├── package.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts

ESLint

ESLint 能够通过动态剖析,来审查你代码中的谬误,对于前端我的项目也是不可或缺的存在,这里咱们抉择社区比拟风行的 airbnb 格调的 ESLint 规定,通过以下命令装置根底的配置与插件:

pnpm add eslint eslint-config-airbnb-base eslint-plugin-import -D 

而后在我的项目根目录中增加 .eslintrc.json 文件:

{
  "extends": [
    "eslint:recommended",
    "airbnb-base",
  ],
  "plugins": ["import"],
}

反对 TS 和 React

对于 TypeScript 以及 React 我的项目,还须要额定的 parserplugin 来反对:

# TypeScirpt eslint parser
pnpm add @typescript-eslint/parser @typescript-eslint/eslint-plugin -D

# React eslint plugin
pnpm add eslint-plugin-react eslint-plugin-react-hooks -D

.eslintrc.json 文件中增加相应的规定:

{
   "extends": [
    "eslint:recommended",
    "airbnb-base",
    "plugin:react/recommended",
    "plugin:react/jsx-runtime",
    "plugin:react-hooks/recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "plugins": [
    "import",
    "@typescript-eslint",
    "react",
  ],
  "parser": "@typescript-eslint/parser",
}

最初在 package.json 中增加对应的 scripts 就功败垂成了:

{
  "scripts": {"lint": "eslint --fix --quiet --ext .ts,.tsx src"}
}

prettier

prettier 是一个代码格式化工具,能够通过它来实现代码缩进、空行等排版格调的对立,通过以下命令进行装置:

pnpm add prettier -D

而后在根目录中增加 .prettierrc.json 配置文件:

{
  "printWidth": 80,
  "tabWidth": 2,
  "semi": true,
  "singleQuote": true
}

联合 ESLint 应用

咱们能够通过 prettierESLint 插件来实现查看 ESLint 规定时也同步查看 prettier 代码格调的规定:

pnpm add eslint-plugin-prettier eslint-config-prettier -D

装置后在 .eslintrc.json 中增加相应配置,留神须要设置 prettier/prettier 相干规定为 error

{
  "extends": [
    "eslint:recommended",
    "airbnb-base",
    "plugin:react/recommended",
    "plugin:react/jsx-runtime",
    "plugin:react-hooks/recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended",
    "prettier"
  ],
  "plugins": [
    "import",
    "@typescript-eslint",
    "react",
    "prettier"
  ],
  "parser": "@typescript-eslint/parser",
  "rules": {"prettier/prettier": "error",}
}

husky + lint-staged

配置好 ESLintprettier 之后,你须要一个工作流来触发 lint 的相关检查,这里咱们抉择比拟罕用的 husky + lint-staged 的组合:

pnpm add husky lint-staged -D

在根目录的 package.json 中增加对应的配置:

{
  "lint-staged": {"**/*.{ts,tsx}": [
      "eslint --fix --quiet",
      "prettier --write",
      "git add"
    ]
  }
}

它会在匹配到 .ts/.tsx 后缀的文件时去执行 ESLintprettier 的修复工作。

你还须要在 .husky 中增加 precommit 文件来触发 lint-staged 的这个行为:

#!/bin/sh
. "$(dirname"$0")/_/husky.sh"

npx lint-staged

最初在 package.jsonscripts 中增加 husky 的初始化脚本,来保障上述钩子可能失常触发:

{
  "scripts": {"prepare": "husky install"}
}

顺利的话,通过以上配置,你在每次进行 commit 之后都会由 husky 触发 precommit 钩子并由 lint-staged 来匹配文件规定,执行相应的 lint 查看与修复。

vitest

单元测试是我的项目开发中比拟重要的一部分,通过单元测试能够肯定水平上保障我的项目的代码品质以及逻辑的完整性,对于 vite 创立的我的项目,咱们抉择与之匹配度比拟高的测试框架 vitest 来编写测试用例,装置如下:

pnpm create vitest jsdom -D

vite.config.ts 中配置 vitest,抉择 js-dom 环境,这里在顶部增加 vitest 的类型申明引入后,即可在 vitest 中共享 viteplugins 等配置,无需配置 vitest.config.ts 文件:

/// <reference types="vitest" />
import {defineConfig} from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({plugins: [react()],
  test: {
    testTimeout: 20000,
    environment: 'jsdom',
  },
});

一个应用 @testing-library/react 编写的测试用例的简略例子能够参考:react-typescript

github workflow

CI 则是我的项目自动化中比拟重要的一环,通过 CI 能够帮忙你主动执行一些工作,咱们以 github 为例,这里配置一个 CI 相干的 workflow, 它的次要性能是在你 push/pull_request 代码到 github 时,主动执行相干的 ESLint 查看、TypeScript 类型查看以及对测试用例的执行。

首先咱们在根目录新建 .github/workflows 文件夹,而后创立一个 ci.yml 文件,次要内容为:

name: CI
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set node v14
        uses: actions/setup-node@v3
        with:
          node-version: '14'
      - name: Install
        run: npm install
      - name: Lint
        run: npm run lint
  typecheck:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set node v14
        uses: actions/setup-node@v3
        with:
          node-version: '14'
      - name: Install
        run: npm install
      - name: Typecheck
        run: npm run typecheck
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set node v14
        uses: actions/setup-node@v3
        with:
          node-version: '14'
      - name: Install
        run: npm install
      - name: Build
        run: npm run test

这里咱们创立了三个 job:lint/typecheck/test,它们在触发了 push/pull_request 操作后会别离主动执行 scripts 中的 lint/typecheck/test 命令,其中 typecheck 后面没有写,次要内容其实就是 tsc

如何疾速搭建

对于当初的前端我的项目而言,上述 TypeScript 以及 eslintprettierhusky 等基本上属于标配了,但每次创立一个新我的项目都须要从新进行这样的一系列配置也比拟消耗工夫,因而我开发了一个小我的项目,能够帮忙你疾速创立一个配置好以上内容的我的项目,只须要一行代码:

pnpm create @tooltik/cap my-cap-app --template react-ts
  • 我的项目地址:cap,欢送试用、提 issue 和 PR

正文完
 0