一、Sass

react-scripts@2.0.0 以上版本才适用。
react-scripts主要设计原理是将配置好的如 Webpack,Babel,ESLint ,合并到 react-scripts 这npm包中,用户就可以开箱即用。很多开发者都在这基础上进行改造开发。注意 react-scripts 就是create-react-app脚手架的核心配置代码。

1-1 安装依赖

  1. 要使用Sass必须首先安装 `node-sass`
  2. $ npm install node-sass --save
  3. $ # or
  4. $ yarn add node-sass

安装完之后,我们就可以直接把原来的CSS文件后缀直接改为 .scss 或者.sass,然后组件中导入的文件不再是 css文件而给我scss文件即可。

  1. import React, {Component} from 'react';
  2. import store from './Store/Index';
  3. import {AddNumCreator, MinusNumCreator} from './Store/ActionCreaters';
  4. import './App.scss';
  5. class App extends Component {
  6. render() {
  7. return (
  8. <div className="App">
  9. <header className="App-header">
  10. <h1>潇洒</h1>
  11. </header>
  12. </div>
  13. );
  14. }
  15. }
  16. export default App;

1-2 在sass文件中引入其他sass文件

~ 就代表: node_modules

  1. @import 'styles/colors.scss'; //这边路径以当前文件路径为参照
  2. @import '~bootstrap/dist/css/bootstrap.css';

二、Less

由于 create-react-app 脚手架中并没有配置关于 less 文件的解析,所以我们需要自己进行配置。需要安装的插件 less , less-loader 。npm install less less-loader

  1. #1.使用 yarn reject暴露配置文件
  2. $ react-scripts eject
  3. NOTE: Create React App 2 supports TypeScript, Sass, CSS Modules and more without ejecting: https://reactjs.org/blog/2018/10/01/create-react-app-v2.html
  4. ? Are you sure you want to eject? This action is permanent. (y/N) y
  5. #2.修改config/webpack.config.js
  6. //找到如下代码
  7. const cssRegex = /\.css$/;
  8. const cssModuleRegex = /\.module\.css$/;
  9. //修改为如下代码
  10. const cssRegex = /\.(css|less)$/;
  11. const cssModuleRegex = /\.module\.(css|less)$/;
  12. //找到这段代码
  13. test: cssRegex,
  14. exclude: cssModuleRegex,
  15. use: getStyleLoaders({
  16. importLoaders: 1,
  17. sourceMap: isEnvProduction && shouldUseSourceMap,
  18. }),
  19. // Don't consider CSS imports dead code even if the
  20. // containing package claims to have no side effects.
  21. // Remove this when webpack adds a warning or an error for this.
  22. // See https://github.com/webpack/webpack/issues/6571
  23. sideEffects: true
  24. //修改为如下代码
  25. test: cssRegex,
  26. exclude: cssModuleRegex,
  27. use: getStyleLoaders({
  28. importLoaders: 2,
  29. sourceMap: isEnvProduction && shouldUseSourceMap,
  30. },
  31. 'less-loader'
  32. ),
  33. // Don't consider CSS imports dead code even if the
  34. // containing package claims to have no side effects.
  35. // Remove this when webpack adds a warning or an error for this.
  36. // See https://github.com/webpack/webpack/issues/6571
  37. sideEffects: true,
  38. #3.添加@路径配置,修改config/webpack.config.js
  39. // 找到alias 添加代码如下:
  40. '@':path.join(__dirname, '..', "src")