内容简介:前端发展日新月异. 为了不使诸位同仁在看本文是产生疑惑. 在此罗列出此次项目中使用到的环境及库的版本
引
create-react-app 创建一个 react 项目. 然后引入 antd . antd 官网的流程需要自行写配置文件. 与 webpack 相结合. 当然这种做法也无不妥. 但是如果你也想一观背后别有洞天的代码. 那就看下去!
前端发展日新月异. 为了不使诸位同仁在看本文是产生疑惑. 在此罗列出此次项目中使用到的环境及库的版本
- node (v12.16.2)
- npm (v6.14.4)
- react (v16.13.1)
- antd (v4.1.4)
- less (v3.11.1)
- less-loader (v5.0.0)
- babel-plugin-import (v1.13.0)
- webpack (v4.42.0)
如果, 在配置过程中遇到问题, 可参照对应版本查找解决方案.
推荐使用 yarn
安装依赖项
安装 antd
# npm npm install antd --save # yarn yarn add antd
安装 less, less-loader
由于 antd 是由 less 开发的样式组件, 所以我们也需要引入 less 及 less-loader
# npm npm install less less-loader --save # yarn yarn add less less-loader
安装 babel-plugin-import
按需加载组件库, 我们还需要一个插件 babel-plugin-import
更改配置项时注意图中区别
在使用 create-react-app 创建了 react 项目时. 我们在项目目录中是看不到关于 webpack 的配置项的. 而 create-react-app 也为我们提供了能看到它的方式.
暴露配置文件
我们需要在项目终端运行一行命令:
# npm npm run eject # yarn yarn eject
此时, 我们就可以看到项目中多了两个文件夹 config 和 scripts . 再打开 package.json 发现它也是大变样. 不过我们关注的重点主要在 config 文件中的 webpack.config.js 上
更改配置项
// webpack.config.js ... // style files regexes const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; // 此处添加: 自定义添加less配置 const lessRegex = /\.less$/; const lessModuleRegex = /\.module\.less$/; // 添加结束 ...
在 file-loader 上面引入规则 顺序不可变更. 当配置多个 loader 时, loader 的执行顺序是从右到左, 从下到上
...
{
test: sassModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction && shouldUseSourceMap,
modules: {
getLocalIdent: getCSSModuleLocalIdent,
},
},
'sass-loader'
),
},
// 此处添加: 自定义添加 less
{
test: lessRegex,
exclude: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction && shouldUseSourceMap,
},
'less-loader'
),
sideEffects: true,
},
{
test: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction && shouldUseSourceMap,
modules: {
getLocalIdent: getCSSModuleLocalIdent,
},
},
'less-loader'
),
},
// 添加结束!
{
loader: require.resolve('file-loader'),
// Exclude `js` files to keep "css" loader working as it injects
// its runtime that would otherwise be processed through "file" loader.
// Also exclude `html` and `json` extensions so they get processed
// by webpacks internal loaders.
exclude: [/\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
options: {
name: 'static/media/[name].[hash:8].[ext]',
},
},
// ** STOP ** Are you adding a new loader?
...
按需加载
...
plugins: [
[
require.resolve('babel-plugin-named-asset-import'),
{
loaderMap: {
svg: {
ReactComponent:
'@svgr/webpack?-svgo,+titleProp,+ref![path]',
},
},
},
],
// 此处添加: 按需引入 antd
[
require.resolve('babel-plugin-import'),
{
libraryName: 'antd',
"libraryDirectory": "es",
style: true
}
]
// 添加结束
],
...
自定义主题
...
if (preProcessor) {
loaders.push(
{
loader: require.resolve('resolve-url-loader'),
options: {
sourceMap: isEnvProduction && shouldUseSourceMap,
},
},
{
loader: require.resolve(preProcessor),
options: {
sourceMap: true,
},
}
);
}
// 此处添加: 自定义主题
if (preProcessor && preProcessor === 'less-loader') {
loaders.push(
{
loader: require.resolve('resolve-url-loader'),
options: {
sourceMap: isEnvProduction && shouldUseSourceMap
}
},
{
loader: require.resolve(preProcessor),
options: {
sourceMap: true,
javascriptEnabled: true,
modifyVars: {
'primary-color': '#ff4757',
'link-color': '#ff4757',
'border-radius-base': '2px',
}
}
}
);
}
// 添加结束
return loaders;
...
此后, 我们无需在任何地方引入 antd 的 css 文件!
配置结束, 运行项目!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- React 中引入 Angular 组件
- Tars 2.4.8 发布,引入多个组件
- Material UI 4.3.2 发布,引入新的 Skeleton 组件
- WPS Office 2019 For Linux 8722 发布,引入pdf组件
- ApiBoot 2.1.2.RELEASE 发布,引入链路式日志组件 Admin
- Python算法引入
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。