create-react-app项目配置全解析

create-react-app 项目配置全解析

create-react-app 是基于 React 的官方脚手架工具,使用 create-react-app 可以快速构建一个 React 应用,并且默认已经配置了一些开发所需的基础配置,可以省去我们自己手动配置的过程。

安装

使用 create-react-app 前需要先全局安装该工具,使用以下命令进行安装:

npm install -g create-react-app

创建项目

使用 create-react-app 创建一个项目非常简单,只需在命令行中执行以下命令:

create-react-app <项目名>

例如,创建一个名为 my-app 的项目:

create-react-app my-app

项目目录结构

执行上述命令后,create-react-app 会自动创建一个基于 React 的项目,该项目的目录结构如下:

my-app/
  README.md
  node_modules/
  package.json
  public/
    index.html
    favicon.ico
  src/
    App.css
    App.js
    App.test.js
    index.css
    index.js
    logo.svg

其中,public/ 目录存储项目入口文件和其他静态文件,src/ 目录存储项目的源代码。

配置文件

create-react-app 为我们封装了 webpack 配置,如果我们需要修改一些 webpack 的配置项,那么需要使用 eject 命令将配置文件暴露出来,并且此操作是不可逆的,执行后将不能回滚,因此在 eject 前需要确认操作。

使用以下命令执行 eject 操作:

npm run eject

执行上述命令后,create-react-app 会将隐藏的配置文件暴露出来,暴露后会多出一个名为 config 的目录,该目录中存储了 webpack 配置相关的文件。

示例说明

以下为两个配合 create-react-app 使用的示例。

示例一

假设我们现在需要在项目中引入 antd 库,我们可以使用以下命令进行安装:

npm install antd --save

安装完成后,我们需要在项目中引入该库,具体操作如下:

在 index.js 中添加以下代码:

import React from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));

然后在 App.js 中使用 antd 的组件:

import React, { Component } from 'react';
import { Button } from 'antd';

class App extends Component {
  render() {
    return (
      <div>
        <Button type="primary">Button</Button>
      </div>
    );
  }
}

export default App;

示例二

假设我们需要在项目中使用 sass 预处理语言,我们可以使用以下命令进行安装:

npm install node-sass sass-loader --save-dev

安装完成后,在 config/webpack.config.js 添加以下代码:

const sassRegex = /\.scss$/,
      sassModuleRegex = /\.module\.scss$/;

// ...

// 添加 sass 和 scss 文件处理
{
    test: sassRegex,
    exclude: sassModuleRegex,
    use: [
      isEnvDevelopment && 'style-loader',
      isEnvProduction && MiniCssExtractPlugin.loader,
      {
        loader: require.resolve('css-loader'),
        options: {
          importLoaders: 2,
        },
      },
      {
        loader: require.resolve('sass-loader'),
        options: {
          implementation: require('node-sass'),
        },
      },
      {
        loader: require.resolve('postcss-loader'),
        options: {
          ident: 'postcss',
          plugins: () => [
            require('postcss-flexbugs-fixes'),
            autoprefixer({
              flexbox: 'no-2009',
            }),
          ],
        },
      },
    ].filter(Boolean),
},
{
    test: sassModuleRegex,
    use: [
      isEnvDevelopment && 'style-loader',
      isEnvProduction && MiniCssExtractPlugin.loader,
      {
        loader: require.resolve('css-loader'),
        options: {
          importLoaders: 2,
          modules: {
            getLocalIdent: getCSSModuleLocalIdent,
          },
        },
      },
      {
        loader: require.resolve('sass-loader'),
        options: {
          implementation: require('node-sass'),
          sassOptions: {
            modules: true,
          },
        },
      },
      {
        loader: require.resolve('postcss-loader'),
        options: {
          ident: 'postcss',
          plugins: () => [
            require('postcss-flexbugs-fixes'),
            autoprefixer({
              flexbox: 'no-2009',
            }),
          ],
        },
      },
    ].filter(Boolean),
},

添加完成后,我们可以在项目中使用 scss 文件了,例如在 App.js 中添加以下代码:

@import './App.module.scss';

.App {
  font-family: sans-serif;
  text-align: center;
}

$font-size: 32px;

.App-logo {
  animation: App-logo-spin infinite 20s linear;
  height: $font-size;
  margin-top: $font-size;
}

.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}

.App-link {
  color: #61dafb;
}

@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

$primary-color: #1890ff;

.Button {
  background: $primary-color;
  border: none;
  color: #fff;
  padding: 10px 20px;
  border-radius: 5px;
  cursor: pointer;

  &:hover {
    background: lighten($primary-color, 10%);
  }
}

注意:如果修改了以上配置后,需要重新执行 npm start 才能生效。

参考

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:create-react-app项目配置全解析 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript创建对象的七种方式(推荐)

    JavaScript创建对象的七种方式(推荐) 在JavaScript中,创建对象有多种方式。本文将介绍七种推荐的创建对象的方式。 1. 对象字面量 对象字面量是创建对象最常用、最简单的方式之一。使用花括号{}包裹对象中的属性和方法即可。 const person = { name: ‘Alice’, age: 30, sayHello() { consol…

    JavaScript 2023年5月27日
    00
  • Javascript 引擎工作机制详解

    Javascript 引擎工作机制详解 Javascript 是一种高级语言,它被广泛应用于 Web 开发、移动应用开发等领域。Javascript 的运行依赖于浏览器或 Node.js 等环境提供的 Javascript 引擎。本文将详细讲解 Javascript 引擎的内部工作机制。 引擎架构 Javascript 引擎通常由如下几个组件组成: 解释器:…

    JavaScript 2023年6月10日
    00
  • 解析JavaScript中delete操作符不能删除的对象

    解析JavaScript中delete操作符不能删除的对象 在JavaScript中,delete操作符可以用来删除对象中的属性,但是有些情况下,delete操作符却不能删除对象中的属性。本攻略将为您介绍delete操作符不能删除的对象以及造成这种限制的原因。 delete操作符无法删除的对象 delete操作符无法删除以下类型的对象: 环境变量(Lexic…

    JavaScript 2023年5月28日
    00
  • JavaScript打开word文档的实现代码(c#)

    为了详细讲解“JavaScript打开word文档的实现代码(c#)”的完整攻略,我将会分为以下几个部分进行阐述: 相关基础知识介绍 实现思路及步骤 示例说明 结语 1. 相关基础知识介绍 在介绍如何实现JavaScript打开word文档的实现代码(c#)之前,我们需要了解以下两个基础知识: 1.1 ActiveXObject对象 ActiveXObjec…

    JavaScript 2023年5月27日
    00
  • js正则表达式基本语法(精粹)

    下面是关于JS正则表达式基本语法的完整攻略。 JS正则表达式基本语法 正则表达式的定义 正则表达式(Regular Expression)是一种可以用于字符串匹配的规则,它可以帮助我们快速地从字符串中提取需要的信息。 正则表达式语法 在JS中,我们可以使用RegExp对象来创建正则表达式,其基本语法如下: var regExp = new RegExp(pa…

    JavaScript 2023年5月19日
    00
  • JavaScript实现数值自动增加动画

    JavaScript实现数值自动增加动画 简介 数值自动增加动画是Web开发中经常使用的一种交互效果,可以应用在比如数字滚动、统计数据等场景。本文将介绍使用JavaScript实现数值自动增加动画的完整攻略,包括实现原理、具体实现步骤和示例说明。 实现原理 实现数值自动增加动画的基本原理是利用定时器setInterval()循环计算数值,并更新数值显示。具体…

    JavaScript 2023年6月10日
    00
  • 动态JavaScript所造成一些你不知道的危害

    当涉及到使用JavaScript编写具有动态性的应用程序时,可能会有一些与安全相关的问题,因为动态JavaScript代码可能会被攻击者利用以进行欺诈、窃听或入侵。以下是一些动态JavaScript会带来的危害和如何防止它们的方法: XSS 攻击 跨站点脚本攻击(XSS)是一种攻击,攻击者利用动态JavaScript来执行恶意代码并跨越不同的域。这可以导致攻…

    JavaScript 2023年5月18日
    00
  • 简单谈谈JS数组中的indexOf方法

    关于“简单谈谈JS数组中的indexOf方法”的攻略,我会详细讲解如下。 什么是 indexOf 方法 在 JavaScript 中,数组是一种常用的数据结构,它提供了许多方法来操作数组。其中一个非常有用的方法是 indexOf。这个方法可以用来查找数组中某个元素的位置。 如何使用 indexOf 方法 语法 arr.indexOf(searchElemen…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部