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

简介: 注:由于前端更新非常快,写这篇文章时 create-react-app 使用的版本是1.4.1 最新的使用流程请参照官方文档。create-react-app 是facebook推出的快速创建react项目的命令行工具。

注:由于前端更新非常快,写这篇文章时 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')
            ]
          },
img_fbdbab367fb9338d13fae753fedffd87.png
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
    内容如下:
body
  margin: 0
  padding: 0
  background-color: #f1f1f1
  *
    margin: 0
    padding: 0
    box-sizing: border-box
    font-family: "微软雅黑","Times New Roman",Georgia,Serif
a
  text-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

相关文章
|
5月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
250 2
|
11月前
|
缓存 前端开发 JavaScript
学习React的最佳实践有哪些?
学习React的最佳实践有哪些?
340 86
|
前端开发 JavaScript
学习react基础(3)_setState、state、jsx、使用ref的几种形式
本文探讨了React中this.setState和this.state的区别,以及React的核心概念,包括核心库的使用、JSX语法、类与函数组件的区别、事件处理和ref的使用。
228 3
学习react基础(3)_setState、state、jsx、使用ref的几种形式
|
前端开发 JavaScript
React学习之——条件渲染
【10月更文挑战第16天】React 中没有像Vue中v-if这种指令。React 中的条件渲染和 JavaScript 中的一样,使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI。
|
11月前
|
前端开发
如何在React Router中进行嵌套路由配置?
如何在React Router中进行嵌套路由配置?
566 57
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
2534 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
11月前
|
前端开发 JavaScript API
如何快速学习React?
如何快速学习React?
332 1
|
XML 前端开发 JavaScript
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
这篇文章是React的学习笔记,覆盖了从React的基础用法到高级特性,包括组件化、状态管理、生命周期、虚拟DOM等主题,适合React初学者参考。
474 0
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
|
前端开发
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 提高开发效率和代码质量。
365 3
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
169 2