React默認腳手架新增Less支持


React默認腳手架新增Less支持

前言

通過React默認腳手架(create-react-app)創建出的項目默認是不支持less作為css預編譯工具的。
如需支持有兩種方式:
1、通過執行命令 yarn eject 將腳手架預先封閉的Webpack等配置工具的源文件暴露出來自行添加;
2、使用customize-cra、react-app-rewired對配置進行擴展。

因為官方之所以封閉部分配置肯定是有它原因的,這里我還是采取第二種方式。

執行步驟:

安裝 customize-cra、react-app-rewired依賴

yarn add customize-cra react-app-rewired --save-dev

安裝less依賴

yarn add less less-loader@5.0.0  --save-dev

注意這里的less-loader版本是5.0.0,不設置版本后續運行會報錯,參考最底下的github的issues

創建config-overrides文件

在項目的根目錄下創建名稱為config-overrides的文件。不需要加js后綴。如下圖:

再將下面代碼復制到文件內

const {
    override,
    addLessLoader,
  } = require('customize-cra');
  
  module.exports = override(
    addLessLoader({  
      javascriptEnabled: true,
      ModifyVars: {'@primary-color': '#1DA57A'}, 
      sourceMap:true,
    }),
  )

更新package.json

還需要將package.json文件內scripts節點的start、build更新為下面的樣子

    "start": "react-app-rewired start",
    "build": "react-app-rewired build",

使用less

將腳手架內原有的css文件更改為less格式,在js或jsx內引入。

如less樣式代碼如下:


@h1Color: red;
.App {
  text-align: center;
}
div {
  h1 {
    color: red;
  }
}
.App-logo {
  height: 40vmin;
  pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}
.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}
.App-link {
  color: #61dafb;
}
@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}


js代碼如下:

import React from 'react';
import logo from './logo.svg';
import style from'./App.less';
function App() {
  return (
  <div>
    <h1>Hello,Word</h1>  
  </div>)
}
export default App;

運行結果如下:

參考:
https://github.com/ant-design/ant-design/issues/23624


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM