美文网首页
create-react-app如何使用less/sass和re

create-react-app如何使用less/sass和re

作者: 趁你还年轻233 | 来源:发表于2018-05-17 19:57 被阅读915次
  • 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包括09,az以及下划线。而"-"不属于单词,因此CSS Modules不支持。例如我们需要将.Foo.bar修改为.bar,某些方面也简化了我们的代码。使用CSS Modules之后,我们就不需要再使用BEM之类的CSS规范。

参考:
https://github.com/facebook/create-react-app/issues/3457
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#adding-a-css-preprocessor-sass-less-etc
https://medium.com/nulogy/how-to-use-css-modules-with-create-react-app-9e44bec2b5c2

相关文章

  • create-react-app如何使用less/sass和re

    create-react-app如何使用less? create-react-app如何使用sass? creat...

  • 3.vue项目中sass的使用

    由于上一篇讲解了在vue项目中如何使用less,本篇重点讲解如何使用sass 一.安装sass: npm inst...

  • bootstrap

    bootstrap开源,基于less和sass,所有的样式都基于sass和less,一个傻瓜式的框架,可以使用ct...

  • 2019-11-25为什么用Sass而不是Less?

    主要解答以下几个问题: 1、什么是Sass和Less?2、为什么要使用CSS预处理器?3、Sass和Less的比较...

  • Less/Sass

    Less 和 Sass 第一章 Less和Sass简介 Less和Sass都为动态样式表的语言,即css框架,通过...

  • sass/scss/less/css的前世今生

    sass/scss 和 less的区别 一. Sass/Scss、Less是什么? 二. Sass/Scss与Le...

  • 使用sass和less

    sass和less对比sassless变量声明$xxx: #F00;@xxx: #F00;变量引用backgrou...

  • webpack学习

    sass 和 less 都是css的拓展语言,less和sass最主要的区别是less是通过Javascript编...

  • 面试必看:less与sass的区别

    less与sass的区别 在介绍less和sass的区别之前,我们先来了解一下他们的定义: 一、Less、Sass...

  • 第十三周第一天笔记之less

    less知识 简书链接less使用总结:less基础知识less使用总结2:less使用总结 单位px,em,re...

网友评论

      本文标题:create-react-app如何使用less/sass和re

      本文链接:https://www.haomeiwen.com/subject/tsyidftx.html