Vite+React搭建開發(fā)構(gòu)建環(huán)境實踐記錄
前言
使用 Vite 已經(jīng)有兩年了,期間使用它開發(fā)過單頁面應用,也開發(fā)過瀏覽器擴展插件,對比日常工作中用到的 webpack 構(gòu)建速度大幅提升,開發(fā)體驗也好很多。
雖然相比于 webpack 來說簡單了很多,但是仍然有一些配置需要記錄一下,以便之后可以快速搭建一個本地開發(fā)構(gòu)建的環(huán)境。
使用 create-vite 腳手架生成基礎模板
運行命令安裝腳手架
yarn create vite
我在安裝時提供的命令行選項那里,選擇了 React + TypeScript。
使用下面的命令啟動項目
yarn dev
此時的項目已經(jīng)默認集成了 @vitejs/plugin-react 這個插件。
到這一步其實就已經(jīng)基本結(jié)束了,自動集成 HMR,jsx,ts,css module,資源打包等一系列功能。
相比于 webpack,簡直不要太友好。
eslint
先安裝 eslint:
yarn add eslint -D
然后初始化eslint配置:
yarn eslint --init
選擇選項后,我自己安裝的庫大致是:
eslint-plugin-react@latest eslint-config-standard-with-typescript@latest @typescript-eslint/eslint-plugin@^5.0.0 eslint@^8.0.1 eslint-plugin-import@^2.25.2 eslint-plugin-n@^15.0.0 eslint-plugin-promise@^6.0.0 typescript@* // 這個可以移除
之后有兩個方案:
- 方案一,使用vite-plugin-eslint,這個會在報錯時在頁面上顯示報錯信息。
- 方案二,使用 VSCode 的 ESlint 插件去使用 ESLint,這個是在代碼上出現(xiàn)紅線報錯。(個人更喜歡這種)
方案二直接用插件即可,方案一需要安裝一下庫:
yarn add vite-plugin-eslint -D
安裝完畢后,在vite.config.ts中配置:
//... import eslint from "vite-plugin-eslint"; export default defineConfig({ plugins: [react(), eslint()], //... });
無論方案一還是方案二,此時仍會報錯,因為 ESLint 無法解析 ts 代碼,所以還需要安裝 @typescript-eslint/parser
yarn add @typescript-eslint/parser -D
最后你還需要在.eslintrc.json 加上這行配置:
"parserOptions": { //... "project": "tsconfig.json" },
基本完畢。
為什么說是基本?因為 eslint 配置還是更多跟代碼習慣有關,比如單雙引號的使用之類的,所以剛配置完一般都一堆報錯,還需要自己去慢慢調(diào)整。
而且還涉及到與 prettier 的配置相沖突的問題,eslint 和 prettier 的配置分別是代碼校驗和代碼格式化時的規(guī)則,所以也是要保證規(guī)則一致的。
手動調(diào)整規(guī)則太繁瑣了,一般使用eslint-config-prettier禁用掉 ESLint 中和 Prettier 配置有沖突的規(guī)則,然后用eslint-plugin-prettier保證 eslint 用 prettier 的風格校驗。
yarn add eslint-config-prettier eslint-plugin-prettier -D
然后在.eslintrc.json 中加上配置:
{ "extends": [ //... "plugin:prettier/recommended" ], }
另外根據(jù)需要一般常用的配置列一下:
{ "rules": { "react/react-in-jsx-scope":"off", // 使用 jsx 時不需要引用 React "@typescript-eslint/strict-boolean-expressions":"off" // 表達式中的布爾值必須嚴格是布爾類型 } }
prettier
安裝
yarn add prettier -D
根目錄下新建.prettierrc 配置文件,然后給個我自己用的配置方案:
{ printWidth: 100, tabWidth: 4, useTabs: false, singleQuote: true, jsxSingleQuote: false, endOfLine: 'lf' }
一般這個配合 VSCode 的 Prettier 插件和保存時格式化即可。
另外,對于 lf 和 crlf 的處理,保存時沒法切換,需要在 VSCode 中設置。
react-router
安裝:
yarn add react-router-dom
然后修改 main.tsx 中的代碼吧:
//... import {RouterProvider} from "react-router-dom"; import router from './router'; //... ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( <React.StrictMode> <RouterProvider router={router} /> </React.StrictMode> );
這里我將路由相關代碼放在了單獨的路由文件 router.tsx 中:
import { createBrowserRouter } from 'react-router-dom'; import Framework from './Framework'; import Error from './Error'; import Home from '@/pages/home'; import About from '@/pages/about'; const router = createBrowserRouter([ { path: '/', element: <Framework />, errorElement: <Error />, children: [ { path: 'home', element: <Home />, }, { path: 'about', element: <About />, }, ], }, ]); export default router;
antd
安裝命令:
yarn add antd
然后在主 less 文件中加上代碼:
@import 'antd/es/style/themes/default.less'; @import 'antd/dist/antd.less'; @primary-color: #4294ff; // 更換全局主色
然后還需要更改 vite.config.ts:
//... export default defineConfig({ //... css: { preprocessorOptions: { less: { javascriptEnabled: true, }, }, }, });
別名
通常我們會使用下面的方式來使用別名:
import reactLogo from "@/assets/react.svg";
默認情況下,會直接報錯,所以我們需要在vite.config.ts進行如下配置:
//... import path from "path"; export default defineConfig({ //... resolve: { alias: { "@": path.resolve(__dirname, "src"), }, }, });
這里因為沒有 path 這個依賴庫,所以還要運行命令安裝:
yarn add path -D
此時別名功能已經(jīng)可以正常使用,但是__dirname會報紅,需要安裝@types/node
yarn add @types/node -D
這時別名時沒有智能提示的,所以還需要在tsconfig.json中,配置:
{ "compilerOptions": { //... "baseUrl": "./", "paths": { "@/*": ["src/*"] } }, }
完畢。
Less 與 CSS Module
Vite 已集成了 CSS Module 功能,但是想要使用 Less 還需要安裝 less 這個庫。
yarn add less
最后使用的方式如下:
import styles from "./App.module.less";
總結(jié)
暫時就記錄這么多吧,后續(xù)如果有一些別的功能配置,也會統(tǒng)一記錄在這篇博客。
示例代碼倉庫:vite-react-practice。
到此這篇關于Vite+React搭建開發(fā)構(gòu)建環(huán)境實踐的文章就介紹到這了,更多相關React環(huán)境搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
手挽手帶你學React之React-router4.x的使用
這篇文章主要介紹了手挽手帶你學React之React-router4.x的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-02-02React通過useContext特性實現(xiàn)組件數(shù)據(jù)傳遞
本文主要介紹了React如何通過useContext特性實現(xiàn)組件數(shù)據(jù)傳遞,文中有相關的代碼示例供大家參考,對我們學習React有一定的幫助,需要的朋友可以參考下2023-06-06useEffect中return函數(shù)的作用和執(zhí)行時機解讀
這篇文章主要介紹了useEffect中return函數(shù)的作用和執(zhí)行時機,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01React實現(xiàn)下拉框的key,value的值同時傳送
這篇文章主要介紹了React實現(xiàn)下拉框的key,value的值同時傳送方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08react基于react-slick實現(xiàn)多圖輪播效果
React slick是一個使用React構(gòu)建的輪播組件,下面這篇文章主要給大家介紹了關于react基于react-slick實現(xiàn)多圖輪播效果的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07