背景:React使用create-react-app腳手架創建,然后yarn run eject暴露了配置之后修改less配置,
需求:實現antd組件按需加載與修改主題。
一開始是按照webpack.config.dev.js文件中的配置進行less的配置。
可以看到腳手架創建的config文件為加載loader寫了一個公共方法,不是以前的webpack配置,所以仿照他的方式進行配置less文件。
直接復制css的配置,修改成less的配置,然后yarn start重啟項目。
此時可以加載less文件。
下面進行antd的按需加載與主題設置。
下載babel-plugin-import插件,然后在plugins中添加配置
[ 'import', { "libraryName": 'antd', "style": true } ],
發現報錯
Failed to compile.
./node_modules/antd/lib/style/index.less (./node_modules/css-loader??ref--6-oneOf-5-1!./node_modules/postcss-loader/src??postcss!./node_modules/less-loader/dist/cjs.js!./node_modules/antd/lib/style/index.less)
// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^
Inline JavaScript is not enabled. Is it set in your options?
查看issue后加了一下代碼在lessloader里面,仍然報錯
options: { javascriptEnabled: true, modifyVars: { 'primary-color': 'red', }, },
其中“primary-color”是測試antd的自定義主題的。
因為對自動生成的config文件不熟悉,決定改用原來的less配置來對less文件進行加載。
yarn start重啟項目之后,可以實現按需加載與定制主題。
{ test: /\.less$/, //include: paths.appSrc, use: [{ loader: "style-loader" // creates style nodes from JS strings }, { loader: "css-loader" // translates CSS into CommonJS }, { loader: "less-loader",// compiles Less to CSS options: { sourceMap: true, modifyVars: { 'primary-color': '#1DA57A', 'link-color': '#1DA57A', 'border-radius-base': '2px', }, javascriptEnabled: true, } }] },
主要原因還是對於webpack的配置不熟悉,得找時間好好研究一下!
如果沒有暴露配置,可以參考antd官方的配置進行按需加載與定制主題。詳見:在 create-react-app 中使用