create-react-app如何使用less/sass和react-css-modules?

简介: create-react-app如何使用less/sass和react-css-modules?
  • create-react-app如何使用less?
  • create-react-app如何使用sass?
  • create-react-app如何使用react-css-modules?

Thanks @pengzeya


1.create-react-app如何使用less?


安装less-watch-compiler到开发依赖。


npm i less-watch-compiler --save-dev

添加scripts


  "scripts": {
    "build-css": "less-watch-compiler --run-once --main-file=index.less src/less src/css",
    "watch-css": "npm run build-css && less-watch-compiler --main-file=index.less src/less src/css"
  }


运行命令

npm run watch-css

运行结果

创建css目录并生成编译后的index.css文件


src/less/index.less    →    src/css/index.css


程序运行起来后,会监控对应目录下的.less文件,热更新到css目录下。


2.create-react-app如何使用sass?


安装node-sass-chokidar到依赖


npm install --save node-sass-chokidar


添加scripts

"build-css": "node-sass-chokidar src/sass -o src/css",
"watch-css": "npm run build-css && node-sass-chokidar src/sass -o src/css --watch --recursive",

运行命令

npm run watch-css


运行结果

创建css目录并生成编译后的index.css文件


src/sass/index.scss    →    src/css/index.css


程序运行起来后,会监控对应目录下的.scss文件,热更新到css目录下。


3.create-react-app如何使用react-css-modules?


暴露出配置文件:


npm run eject


运行eject命令后,CRA会自动把wepack中与css-modules相关的依赖为我们准备好,无需新增多余的依赖。


修改config/webpack.config.dev.js:


// 修改前
{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
  },
},
// 修改后
{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
    modules: true,
    localIdentName: "[name]__[local]___[hash:base64:5]"  
  },
},


修改config/webpack.config.prod.js:

// 修改前
{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
    minimize: true,
    sourceMap: true,
   },
},
// 修改后
{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
    modules: true,
    minimize: true,
    sourceMap: true,
   },
},


代码变化:

引入CSS Modules之前:

import React, { Component } from 'react';
import logo from './logo.svg';
import './foo.css';
class App extends Component {
  render() {
    return (
      <div className="bar">
      </div>
    );
  }
}
export default App;


引入CSS Modules之后:


import React, { Component } from 'react';
import logo from './logo.svg';
import foo from './foo.css';
class App extends Component {
  render() {
    return (
      <div className={foo.bar}>
      </div>
    );
  }
}
export default App;


添加css-modules之前:


.bar{
    display: block;
    background: yellow;
}

添加css-modules之后:

.foo__bar__1t6eA{
    display: block;
    background: yellow;
}


运行结果


.bar   →    foo__bar__1t6eA

注意事项:


  • 将import进来的'./SomeComponent.css'分配给一个本地常量,例如,import foo from './foo.css';
  • 在JSX中将className替换成的形式{styles.myClass},例如,className={styles.myClass}.
  • 需要修改CSS文件和JSX中的class名。因为CSS Modules不允许"-"出现在类名中,有过开发经验的朋友都知道,正则中有"word"与"none-word"之分,word包括0~9,a~z以及下划线。而"-"不属于单词,因此CSS Modules不支持。例如我们需要将.Foo.bar修改为.bar,某些方面也简化了我们的代码。使用CSS Modules之后,我们就不需要再使用BEM之类的CSS规范。


参考:

https://github.com/facebook/c...

https://github.com/facebook/c...

https://medium.com/nulogy/how...






相关文章
|
10月前
|
前端开发 开发者
CSS预处理器Less、Scss
【10月更文挑战第3天】
197 59
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
2041 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
9月前
|
前端开发
create-react-app 如何使用 less/sass 和 react-css-modules?
本文详细介绍了在 create-react-app 项目中如何使用 less/sass 和 react-css-modules 来管理和应用样式。首先,通过安装相应依赖并配置 webpack 支持 less/sass;接着,介绍如何使用这些预处理器编写样式;最后,讲解了如何配置和使用 react-css-modules 实现样式的模块化管理,以及如何结合使用 less/sass 和 react-css-modules 提高开发效率和代码质量。
181 3
|
10月前
|
XML 前端开发 JavaScript
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
这篇文章是React的学习笔记,覆盖了从React的基础用法到高级特性,包括组件化、状态管理、生命周期、虚拟DOM等主题,适合React初学者参考。
253 0
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
|
10月前
|
前端开发 JavaScript
React Tailwind CSS
10月更文挑战第12天
120 1
|
11月前
|
XML 移动开发 前端开发
使用duxapp开发 React Native App 事半功倍
对于Taro的壳子,或者原生React Native,都会存在 `android` `ios`这两个文件夹,而在duxapp中,这些文件夹的内容是自动生成的,那么对于需要在这些文件夹中修改的配置内容,例如包名、版本号、新架构开关等,都通过配置文件的方式配置了,而不需要需修改具体的文件
|
10月前
|
前端开发 容器
React 使用 CSS 样式
10月更文挑战第12天
106 0
|
11月前
|
JavaScript 前端开发
react Or vue中引入animate.css
本文介绍了如何在React或Vue项目中引入animate.css库来使用动画效果,包括通过npm安装或在线链接引入,并展示了如何在React组件和Vue路由过渡中使用动画类。
263 0
|
12月前
|
前端开发 Java UED
JSF 面向组件开发究竟藏着何种奥秘?带你探寻可复用 UI 组件设计的神秘之路
【8月更文挑战第31天】在现代软件开发中,高效与可维护性至关重要。JavaServer Faces(JSF)框架通过其面向组件的开发模式,提供了构建复杂用户界面的强大工具,特别适用于设计可复用的 UI 组件。通过合理设计组件的功能与外观,可以显著提高开发效率并降低维护成本。本文以一个具体的 `MessageComponent` 示例展示了如何创建可复用的 JSF 组件,并介绍了如何在 JSF 页面中使用这些组件。结合其他技术如 PrimeFaces 和 Bootstrap,可以进一步丰富组件库,提升用户体验。
126 0
|
前端开发
react的css样式
react的css样式
下一篇
对象存储OSS