Vite+React搭建开发构建环境实践
前言
使用 Vite 已经有两年了,期间使用它开发过单页面应用,也开发过浏览器扩展插件,对比日常工作中用到的 webpack 构建速度大幅提升,开发体验也好很多。
虽然相比于 webpack 来说简单了很多,但是仍然有一些配置需要记录一下,以便之后可以快速搭建一个本地开发构建的环境。
使用 create-vite 脚手架生成基础模板
运行命令安装脚手架
yarn create vite
我在安装时提供的命令行选项那里,选择了 React + TypeScript。
使用下面的命令启动项目
yarn dev
此时的项目已经默认集成了 @vitejs/plugin-react 这个插件。
到这一步其实就已经基本结束了,自动集成 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,这个是在代码上出现红线报错。(个人更喜欢这种)
方案二直接用插件即可,方案一需要安装一下库:
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","tsconfig.node.json"]
},
基本完毕。
为什么说是基本?因为 eslint 配置还是更多跟代码习惯有关,比如单双引号的使用之类的,所以刚配置完一般都一堆报错,还需要自己去慢慢调整。
而且还涉及到与 prettier 的配置相冲突的问题,eslint 和 prettier 的配置分别是代码校验和代码格式化时的规则,所以也是要保证规则一致的。
手动调整规则太繁琐了,一般使用eslint-config-prettier禁用掉 ESLint 中和 Prettier 配置有冲突的规则,然后用eslint-plugin-prettier保证 eslint 用 prettier 的风格校验。
yarn add eslint-config-prettier eslint-plugin-prettier -D
然后在.eslintrc.json 中加上配置:
{
"extends": [
//...
"plugin:prettier/recommended"
],
}
另外根据需要一般常用的配置列一下:
{
"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
此时别名功能已经可以正常使用,但是__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";
总结
暂时就记录这么多吧,后续如果有一些别的功能配置,也会统一记录在这篇博客。
示例代码仓库:vite-react-practice。
Vite+React搭建开发构建环境实践的更多相关文章
- Docker下搭建Jenkins构建环境
首先需要搭建好docker环境的linux系统,这个教程多如牛毛,在此不再赘述. 然后编写一个dockerfile来生成一个镜像,dockerfile其实就是一系列命令的集合,有点像windows的批 ...
- [ubuntu]android SDK 与Gradle环境的安装与配置|搭建android基础开发/构建环境
系统环境: linux:ubuntu18 已配置jdk 环境变量 切换到root账户 sudo su 安装Android-sdk (0)准备工作 切换到/usr/local目录: /usr/local ...
- windows安装React Native开发运行环境
React Native是什么 React Native是facebook开源的一个用于开发app的框架.React Native的设计理念:既拥有Native (原生) 的用户体验.又保留React ...
- gulp+sass+react前端开发,环境搭建
由于前端技术的发展与市场需求的提高,前端开发已经不仅仅是写几个页面那么简单.如何有效的开发.管理一个越来越庞大.越来越复杂的前端项目,成为互联网团队必须要面对的难题. 各种js库.ui库曾经火极一时. ...
- 1.使用pycharm搭建开发调试环境【转】
感谢 feigamesnb 第一步:安装python2.7环境 去https://www.python.org/downloads/下载windows版本的python,选择2.7版本,按提示安装,并 ...
- envoy开发调试环境搭建
image 前段时间研究envoy的filter开发,在windows机器环境上面折腾了会,这里记录一下,希望能够帮助到大家少走一些坑 主要是使用vscode devContainer的方式来搭建开发 ...
- 利用 Rational ClearCase ClearMake 构建高性能的企业级构建环境
转载地址:http://www.ibm.com/developerworks/cn/rational/r-cn-clearmakebuild/ 构建管理是 IBM® Rational® ClearCa ...
- 用Vagrant创建Jenkins构建环境
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
- [转载]Sublime Text 3 搭建 React.js 开发环境
[转载]Sublime Text 3 搭建 React.js 开发环境 Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境. 1. babe ...
随机推荐
- 简单性能测试:springboot-2.x vs actix-web-4.x benchmark
性能测试:springboot-2.x vs actix-web-4.x benchmark 转载请注明出处 https://www.cnblogs.com/funnyzpc/p/15956465.h ...
- MySQL 锁常见知识点&面试题总结
节选自 <MySQL 常见知识点&面试题总结> 表级锁和行级锁了解吗?有什么区别? MyISAM 仅仅支持表级锁(table-level locking),一锁就锁整张表,这在并发 ...
- Linux YUM yum 命令详解
Yum命令 常用yum命令列表 command is one of: * install package1 [package2] [...] * update [package1] [package2 ...
- 【UR #2】猪猪侠再战括号序列 题解
题目链接 前言 是的没脑子选手只会做签到题. 思路分析 一开始把题目看成反转括号的状态,直接浪费 \(40\ mins\) . 我们考虑把不确定的"正确括号"转换成一个固定的括号序 ...
- idea java 打包的方法
方法1: 在pom.xml 里面加上maven打包的配置 <plugin> <groupId>org.springframework.cloud</groupId> ...
- 数据类型 简单扩展(Java)
public class HelloWorld { public static void main(String[] args) { //整数拓展 进制 二进制0b 十进制 八进制0 十六进制0x i ...
- ApiDay002_02 Object中的包装类
1.Object:对象/东西 是所有类的鼻祖,所有类都直接或间接继承了Object, 万物皆对象,为了多态 Objec中有几个经常被派生类重写的方法:toString()和equals(); 调用to ...
- WPF 制作 Windows 屏保
分享如何使用WPF 制作 Windows 屏保 WPF 制作 Windows 屏保 作者:驚鏵 原文链接:https://github.com/yanjinhuagood/ScreenSaver 框架 ...
- 手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践
本文主要讲解了如何把ABP官方的在线生成解决方案运行起来,并说明了解决方案中项目间的依赖关系.然后手动实践了如何从0搭建了一个简化的解决方案.ABP官方的在线生成解决方案源码下载参考[3],手动搭 ...
- maven项目(引入依赖失败, pom.xml 报错\爆红)
引入项目过程中,idea引入磁盘的某个的maven项目 这里以springboot项目以例子,发现pom.xml 的依赖大面积爆红,springboot的版本依赖也报错了,然后发现下面有进度条在下载, ...