注:由于前端更新非常快,写这篇文章时 create-react-app 使用的版本是1.4.1 最新的使用流程请参照官方文档。
create-react-app 是facebook推出的快速创建react项目的命令行工具。
他和 vue-cli 类似。开箱即用,不用改一行配置就可以开发出针对开发和生产环境的react项目。
比如针对开发环境有eslint语法检测,热重载,带有proxy server等功能。
这些东西大多要归功于webpack的功劳。

默认情况下webpack配置文件不会暴露出来,这不满足我当前的需求,比如这里我喜欢用 stylus(一个类似less,sass的样式预处理器)。stylus 和 sass 类似,支持变量,mixin,函数等功能,而且连括号,分号都不用写。用缩进区分。
create-react-app 支持执行 npm run reject 将相关配置文件释放到根目录下。注意这里是不可逆操作。

官网的 readme 中有怎么添加 sass 和 less 的教程 没有讲如何添加 stylus 支持,其实这也难不倒咱。
具体步骤如下:

  1. 项目根目录执行 npm run reject,会发现多出来个 config 目录,里面的各个配置文件都带有详尽的注释
  2. 安装 stylus 相关依赖,执行 npm install stylus stylus-loader --save-devyarn add stylus stylus-loader
  3. 打开 config\webpack.config.dev.js 我们让webpack支持解析 styl 格式的文件
    在 module->rules->oneOf 组下面添加
          {test: /\.styl$/,use: [require.resolve('style-loader'),require.resolve('css-loader'),require.resolve('stylus-loader')]},
image.png

  1. 打开 webpack.config.prod.js 添加如下(这是我参考下面的针对的css配置,需要更进一步测试)这是因为prod环境下,所有的css都被 ExtractTextPlugin 插件提取到同一个样式文件中,开发环境则是动态的创建style标签并插入到html的header中。
            {test: /\.styl$/,loader: ExtractTextPlugin.extract(Object.assign({fallback: require.resolve('style-loader'),use: [{loader: require.resolve('css-loader'),options: {importLoaders: 1,minimize: true,sourceMap: shouldUseSourceMap,},},{loader: require.resolve('stylus-loader'),}],},extractTextPluginOptions)),// Note: this won't work without `new ExtractTextPlugin()` in `plugins`.},
  1. 新建目录 src\static\styl 并创建 base.styl
    内容如下:
bodymargin: 0padding: 0background-color: #f1f1f1*margin: 0padding: 0box-sizing: border-boxfont-family: "微软雅黑","Times New Roman",Georgia,Serif
atext-decoration: none
  1. 打开 src\index.js,添加 import './static/styl/index.styl';
  2. 最后重新执行 npm run startyarn start 就能看到样式变化了。

参考:
https://cn.vuejs.org/v2/guide/comparison.html#React

react学习系列1 修改create-react-app配置支持stylus相关推荐

  1. react学习系列1 修改create-react-app配置支持stylus 1

    注:由于前端更新非常快,写这篇文章时 create-react-app 使用的版本是1.4.1 最新的使用流程请参照官方文档. create-react-app 是facebook推出的快速创建rea ...

  2. react学习系列之states与props

    state React 把组件看成是一个状态机(State Machines).通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致. React 里,只需更新组件的 state, ...

  3. react学习系列3 使用koa-router模拟后台接口

    当用create-react-app创建好项目,启动后会自动打开 localhost:3000. 我们希望当访问 localhost:3000/api/todo 会向后台发起一个请求,拿到我们想要的 ...

  4. react学习系列(二)

    JSX 语法练习 在jsx语法中,需要书写js代码的时候,请先加上{ } 再书写js语法 import React, { Component } from 'react'let name = &quo ...

  5. React学习系列十propTypes defaultProps

    都是定义在子组件里面的 defaultProps 父子组件传值中,如果父组件调用子组件的时候不给子组件传值,则可以在defaultProps中定义默认值 propTypes 验证父组件传值的类型合法性 ...

  6. react学习系列之ajax

    React 组件的数据可以通过 componentDidMount 方法中的 Ajax 来获取,当从服务端获取数据库可以将数据存储在 state 中,再用 this.setState 方法重新渲染 U ...

  7. Spring Cloud学习系列第六篇【分布式配置中心】

    今天来学习如何使用Spring Cloud Config在微服务中搭建一个分布式配置中心,使用了分布式配置中心之后,我们就可以通过它来管理应用资源与业务资源配置内容.Spring Cloud Conf ...

  8. 深度强化学习系列: 多巴胺(Dopamine)环境配置和实例分析

    Paper: Dopamine–a research framework for deep reinforcement Learning Github: https://github.com/goog ...

  9. STM32 HAL库学习系列第13篇---串口重定向配置--printf

    我的首发平台是公众号[CodeAllen],学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处 发送函数重定向 之后就可以使用输入输出函数 /******************* ...

最新文章

  1. 并查集(浓缩的精华模版!!!!)
  2. 数组元素的修改会影响到转换过来的结合_数组长度属性背后有什么魔力?
  3. rhel7+apache+c cgi+动态域名实现web访问
  4. linux 信号发生器,用STM32实现函数信号发生器
  5. QT解析嵌套JSON表达式
  6. Map集合框架的练习
  7. 增强光学系统设计 | Zemax 全新 22.2 版本产品现已发布!
  8. SWMM面板基础认识
  9. Java对接谷歌邮箱-代码及其谷歌邮箱账号配置
  10. EXCEL中的定位条件(含快速删除空行,定位图片、文本框等对象)
  11. 红米note3 Android N,骁龙650的力量 红米Note3全网通版评测
  12. 西米推荐-FileYee:可能是最简单安全的数据文件备份软件
  13. 动态调试pr_debug
  14. Microbit蓝芽配对
  15. clip python_python中numpy模块下的np.clip()的用法
  16. 说一个道一个.....
  17. 生物信息学所需的计算机知识,生物信息学专业计算机课程的探讨
  18. 数据库学习笔记(SQL server语句)
  19. 手机录音 怎么单声道_手机音量已经调到很大,听起来还是很小怎么办?原来问题出在这里...
  20. python基于朴素贝叶斯模型的预测概率和标签信息可视化ROC曲线

热门文章

  1. java mysql 事物_java基础之MySQL事务和视图
  2. java 旋转方向,Java 2d方向鼠标点旋转
  3. php在线语音,PHP在线语音合成
  4. leetcode976. 三角形的最大周长(又是你得不到的简单题)
  5. 剑指offer:39-42记录
  6. 剑指offer(刷题21-30)--c++,Python版本
  7. STL源码剖析 迭代器的概念和traits编程技法
  8. std::future详解
  9. codeforces 133A-C语言解题报告
  10. 3个观念 不再瞎学习!