跳到主要内容

添加 Sass 样式支持

注意:该功能仅支持 react-scripts@2.0.0 及以上版本。

通常,我们建议你不要在不同组件中重复使用相同的 CSS 类。例如,我们建议创建 <Button> 组件与其自己的 .Button 样式,而不是在 <AcceptButton><RejectButton> 中重复使用 .Button 类,这样 <AcceptButton><RejectButton> 都能正常渲染(但是不继承)。

遵循此规则会降低使用 CSS 预处理器的必要性,因为诸如 mixins 和 nesting 之类的功能均已被组件集成所取代。但是,如果你认为 CSS 预处理器有其必要性的话,可以对其进行集成。

要使用 Sass 的话,首先安装 node-sass

$ npm install node-sass --save
$ # 或
$ yarn add node-sass

现在,你可以将 src/App.css 重命名为 src/App.scss,并更新 src/App.js 以引入 src/App.scss。 如果以扩展名 .scss.sass 引入,则此文件和其他文件都将会自动编译。

要在 Sass 文件间共享变量,可以使用 Sass import,例如,src/App.scss 和其他组件样式文件可以通过 @import "./shared.scss"; 引入变量定义。

这允许你像这样进行引入操作:

@import 'styles/_colors.scss'; // 假设它在 src 下的 styles 目录
@import '~nprogress/nprogress'; // 从 node module 中的 nprogress 中引入 css 文件

注意:如上所示,从 node_modules 引入文件前需要加上 ~

node-sass 也支持 SASS_PATH 变量。

要从你所指定的路径为源头进行相对路径引用,以及在不添加 ~ 的情况下从 node_modules 中引用文件,你可以在项目根目录下添加 .env 文件,加入变量 SASS_PATH=node_modules:src。要指定更多目录,可以把它们用 : 分割加入 SASS_PATH 中,如 path1:path2:path3

如果你设定 SASS_PATH=node_modules:src,这将允许你像这样执行引入:

@import 'styles/colors'; // 假定 src 下有 styles 目录,且存在 _colors.scss 文件
@import 'nprogress/nprogress'; // 从 node module 中引入 nprogress css 文件

注意:对于 windows 操作系统,请使用以下语法:

SASS_PATH=./node_modules;./src

提示:你也可以选择将此功能与 CSS 模块一起使用!

注意:如果你正在使用 Flow,请在你的 .flowconfig 文件中覆盖 module.file_ext 设置,以便其识别 .sass.scss 文件。你还需要为 .js, .jsx, .mjs.json 文件添加 module.file_ext 默认设置。

[options]
module.file_ext=.js
module.file_ext=.jsx
module.file_ext=.mjs
module.file_ext=.json
module.file_ext=.sass
module.file_ext=.scss