入职新公司,要求自己搭建一个react的开发模板,而不是使用现有的 create-react-app
。所以自己搭建了一个
涉及到的功能:
- react, react-dom, react-router
- ESlint + Aribnb
- prettier
- 具体使用还是不使用状态管理库(redux or mobx),视情况而定,不复杂使用 React.crateContext()
- 使用less不使用scss
- 热更新,不是热重载
其他的功能自己适适当配置
项目地址:https://github.com/tal007/react-antd-webpack
loaders
babel-loader
处理js,jsx,ts,tsx语法
style-loader,css-loader,less-loader,postcss-loader
处理css
style-loader:添加到js中,这样修改才会热更新,在开发环境中需要加上,生产环境如果使用mini-css-extract-plugin
抽离css,那么不要加上style-loader
注意loader使用顺序
使用less-loader需要同时安装less库
postcss-loader处理css中的一些问题,压缩等,同时可以使用postcss插件,例如postcss-flexbugs-fixes
, postcss-cssnext
, cssnano
等。
file-loader
处理文件(字体,图片,影视频等)并重新命名
url-loader
处理图片,设置路径以及base64图片压缩
plugins
html-webpack-plugin
设置html模板以及输出路径等
webpack.ProvidePlugin
设置webpack全局变量
1 | new webpack.ProvidePlugin({ |
mini-css-extract-plugin
css代码抽离,详见config/webpack.prod.js
clean-webpack-plugin
清除之前打包的代码
热更新
webpack.HotModuleReplacementPlugin
与 webpack.NamedModulesPlugin()
。前者使用热更新,后者在控制台展示热更新名字。
热更新需要同时使用 react-hot-loader
。
npm i –save-dev react-hot-loader
使用详见: src/App.jsx
。还需要在 .babelrc
中配置 plugins
代码规范
ESlint + Prettier
npm i –save-dev eslint
配合VSCode使用
VSCode 安装插件
.eslintrc.js中添加
1 | "plugins": ["prettier"], |
添加 .ptettierrc.js 配置如下,可自行修改
1 | // configs see https://prettier.io/docs/en/options.html |
在settings.json 中添加如下
1 | // jsx自动修复有问题,取消js的format |
问题
使用 BrowserRouter 刷新 404
在 devServer 中 添加 historyApiFallback: true
使用 webpack alias 的时候路径提示
根目录添加 jsconfig.json
文件,与 alias 中的对应
1 | { |
使用git commit 规范
git-commit规范可以查看优雅的提交你的 Git Commit Message