本文介绍了如何在 Create React App 脚手架中启用 Sass 和 Less。css
关于建立 create-react-app 项目请查看: create-react-app 的安装与建立。node
关于在 less 和 sass 如何在 create-react-app 启用 CSS Modules,请查看个人上一篇文章:在 Create React App 中使用 CSS Modules。react
create-react-app 脚手架中已经添加了 sass-loader 的支持,因此只须要安装 node-sass 插件便可webpack
$ npm install node-sass --save
# 或者
# $ yarn add node-sass
复制代码
.App {
text-align: center;
&-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
}
复制代码
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.scss';
class App extends Component {
render() {
return (
<div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> </header> </div> ); } } export default App; 复制代码
运行项目,此时在浏览器中便可查看到 logo 图片在缓慢转动。web
因为 create-react-app 脚手架中并无配置关于 less 文件的解析,因此咱们须要本身进行配置。须要安装的插件
less
,less-loader
。npm
在命令行运行 npm run eject
命令浏览器
此命令会将脚手架中隐藏的配置都展现出来,此过程不可逆sass
运行完成以后,打开 config 目录下的 webpack.config.js 文件,找到 // style files regexes
注释位置,仿照其解析 sass 的规则,在下面添加两行代码bash
// 添加 less 解析规则
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
复制代码
找到 rules 属性配置,在其中添加 less 解析配置app
!!!注意: 这里有一个须要注意的地方,下面的这些
less
配置规则放在sass
的解析规则下面便可,若是放在了file-loader
的解析规则下面,less
文件解析不会生效。
// Less 解析配置
{
test: lessRegex,
exclude: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 2,
sourceMap: isEnvProduction && shouldUseSourceMap,
},
'less-loader'
),
sideEffects: true,
},
{
test: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 2,
sourceMap: isEnvProduction && shouldUseSourceMap,
modules: true,
getLocalIdent: getCSSModuleLocalIdent,
},
'less-loader'
)
},
复制代码
此时配置完成,安装 less 和 less-loader 插件便可
$ npm install less less-loader --save
复制代码
如下代码根据上面 sass 用法中的文件进行修改
.App {
text-align: center;
&-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
}
}
复制代码
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.less';
class App extends Component {
render() {
return (
<div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> </header> </div> ); } } export default App; 复制代码
运行项目,此时在浏览器中便可查看到 logo 图片在缓慢转动。
配置的时候请注意:关于 less
配置规则放在 sass
的解析规则下面便可,若是放在了 file-loader
的解析规则下面,less
文件解析不会生效。