LOCAL INFORMATION
Vite+React搭建开发构建环境实践
| unavailable_source_assets | Array |
|---|
Vite+React搭建开发构建环境实践
使用 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"
},
基本完毕。
为什么说是基本?因为 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" // 表达式中的布尔值必须严格是布尔类型
}
}
这里也可能涉及到对tsconfig.json的修改:
{
"compilerOptions": {
"noImplicitAny":false, // 未声明类型的变量自动默认为any类型
}
}
这里的配置较多,并且也因人而异,就不一一赘述了。
只要保持团队内部代码风格统一,就算是不符合标准规范的代码,其实也是好代码。
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";
我们可能会用到一些Less全局变量来作为主题之类的,它可能是这样的theme.less:
@primaryColor: #4294ff; // 全局主色
然后修改vite.config.ts为:
export default defineConfig({
// ...
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
additionalData: `@import "${path.resolve(__dirname, 'src/theme.less')}";`,
},
},
},
});
这个可以默认给每个less文件都引入这个theme.less。
转换svg
将引入的svg文件转为react组件。
安装库:
yarn add vite-plugin-svgr -D
然后再vite.config.js中配置一下:
import svgr from 'vite-plugin-svgr'
export default {
// ...
plugins: [svgr()],
}
因为使用了typescript,还需要在vite-env.d.ts中配置一下:
/// <reference types="vite-plugin-svgr/client" />
最后的使用方法:
import { ReactComponent as Logo } from './logo.svg'
发布人:林鸿才
平台审核不替代对信息真实性、权属及服务能力的核实。交易前请核对主体与合同条款,有疑问可向平台反馈。
MORE INFORMATION
同类信息
HTML meta标签总结与属性使用介绍
2026-09-01 发布人:孟勇捷 联系电话: HTML meta标签总结与属性使用介绍 之前学习前端中,对meta标签的了解仅仅只是这一句。 <meta charset="UTF-8"> 但是自己却很不熟悉,于是把meta标签加入了寒假学习计划的最前方。 简介 在查阅w3school中,第一句话中的“元数据”就让我开始了Google之旅。然后
Vite+React搭建开发构建环境实践
2026-09-18 发布人:林鸿才 联系电话: Vite+React搭建开发构建环境实践 使用 create-vite 脚手架生成基础模板 运行命令安装脚手架 yarn create vite 我在安装时提供的命令行选项那里,选择了 React + TypeScript。 使用下面的命令启动项目 yarn dev 此时的项目已经默认集成了 @vitejs/
React传递参数的多种方式
2026-09-03 发布人:武德明 联系电话: React传递参数的多种方式 最常见的就是父子组件之间传递参数 父组件往子组件传值,直接用this.props就可以实现 在父组件中,给需要传递数据的子组件添加一个自定义属性,在子组件中通过this.props就可以获取到父组件传递过去的数据 // 父组件 render() { return ( // 使用自
React中useEffect的源码解读
2026-09-07 发布人:薛德泽 联系电话: React中useEffect的源码解读 按图索骥找到Hook相关源码(可以直接跳) 首先我们从Github上得到react的源码,然后可以在packages中找到react文件夹,其中的index.js就是我们的入口。 代码很简单,就两行: const React = require('./src/Reac