当前位置: 首页 > article >正文

webpack5搭建react脚手架详细步骤

1. 初始化项目

首先,创建一个新目录并初始化项目:

bash

mkdir create-react
cd create-react
pnpm init --y
git init

这里使用pnpm作为包管理工具,因为它在处理依赖和速度上表现更好。

2. 安装React和TypeScript

安装React和React-DOM,以及它们的类型定义:

bash

pnpm add react react-dom
pnpm add -D @types/react @types/react-dom

接着,安装TypeScript并初始化配置文件:

bash

pnpm add typescript -D
tsc --init

你可以根据自己的需求修改tsconfig.json配置文件。

3. 创建源文件

src目录下创建index.tsxApp.tsx文件:

tsx

// index.tsx
import * as React from 'react'
import * as ReactDOM from 'react-dom/client'
import App from './App'
const root = ReactDOM.createRoot(document.getElementById('app')!)
root.render(<App />)

tsx

// App.tsx
import * as React from 'react'
const App: React.FC = () => {
  return <div>hello React</div>
}
export default App

4. 安装Webpack及相关依赖

安装Webpack、Webpack CLI、Webpack Dev Server和Webpack Merge:

bash

pnpm add webpack webpack-cli webpack-dev-server webpack-merge -D

这些工具将帮助我们配置和运行Webpack。

5. 配置Webpack

创建webpack.config.js(或其他你喜欢的文件名),并设置基本的Webpack配置:

javascript

const path = require('path');
​
module.exports = {
  entry: path.resolve(__dirname, '../src/index.tsx'),
  output: {
    path: path.resolve(__dirname, '../dist'),
    filename: '[name].[contenthash].js',
  },
};

这个配置指定了入口文件和输出配置。

6. 配置开发服务器

创建webpack.dev.jswebpack.prod.js来分别配置开发和生产环境:

javascript

// webpack.dev.js
const { merge } = require('webpack-merge');
const base = require('./webpack.config.js');
​
module.exports = merge(base, {
  mode: 'development',
  devServer: {
    open: true,
    port: 8080,
  },
});

javascript

// webpack.prod.js
const { merge } = require('webpack-merge');
const base = require('./webpack.config.js');
​
module.exports = merge(base, {
  mode: 'production',
});

这些配置文件将根据环境不同应用不同的设置。

7. 配置Babel

安装Babel相关依赖,并在webpack.config.js中配置Babel loader:

bash

pnpm add -D babel-loader @babel/core @babel/preset-env @babel/preset-react @babel/preset-typescript

webpack.config.js中添加Babel配置:

javascript

module: {
  rules: [
    {
      test: /\.(js|ts|jsx|tsx)$/,
      exclude: /node_modules/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: [
            ['@babel/preset-env', { useBuiltIns: 'usage', corejs: 3 }],
            '@babel/preset-typescript',
            '@babel/preset-react',
          ],
        },
      },
    },
  ],
},

这个配置允许Webpack通过Babel处理JSX和TSX文件。

8. 配置图片和字体

在Webpack 5中,可以直接使用资源模块(asset module)来处理图片和字体,无需额外的loader。在webpack.config.js中添加以下配置:

javascript

module: {
  rules: [
    {
      test: /\.(png|jpg|gif|svg|webp)$/i,
      type: 'asset',
      parser: {
        dataUrlCondition: {
          maxSize: 25 * 1024, // 25kb
        },
      },
      generator: {
        filename: 'assets/imgs/[name].[hash:8][ext]',
      },
    },
    {
      test: /\.(eot|ttf|woff|woff2)$/i,
      type: 'asset',
      parser: {
        dataUrlCondition: {
          maxSize: 25 * 1024, // 25kb
        },
      },
      generator: {
        filename: 'assets/fonts/[name].[hash:8][ext]',
      },
    },
  ],
},

这个配置将图片和字体分别打包到imgsfonts目录下。

9. 完成配置并运行

最后,更新package.json中的脚本以运行Webpack:

json

"scripts": {
  "dev": "cross-env NODE_ENV=development webpack serve -c scripts/webpack.dev.js",
  "build": "cross-env NODE_ENV=production webpack -c scripts/webpack.prod.js"
}

现在,你可以使用pnpm dev来启动开发服务器,或者使用pnpm build来构建生产版本


http://www.kler.cn/news/367601.html

相关文章:

  • 钉钉消息推送工具类
  • 用“堆”模拟实现“优先级队列”
  • k8s可以部署私有云吗?私有云部署全攻略
  • 2024“源鲁杯“高校网络安全技能大赛-Misc-WP
  • GoogleChrome和Edge浏览器闪屏问题
  • Springboot 使用EasyExcel导出Excel文件
  • mysql简答
  • 【计网】网络层路由过程 ,理解IP分片与组装
  • 【自然语言处理】BERT模型
  • Jedis(二)SpringBoot集成Jedis
  • 富格林:曝光有利追损操作方式
  • 基于Springboot+Vue 云南旅游管理系统(源码+LW+部署讲解+数据库+ppt)
  • 【C++STL】list的模拟实现
  • git clone完整使用手册
  • Cesium中的坐标系
  • 基于Arduino的LED亮灭按键控制
  • MySQL优化手段有哪些
  • 算法训练(leetcode)二刷第七天 | 344. 反转字符串、541. 反转字符串 II、54. 替换数字(第八期模拟笔试)
  • 多款云存储平台存在安全漏洞,影响超2200万用户
  • python把一张小图粘贴到一张大图上
  • anaconda jupyter notebook themes install jupyter notebook样式更改,取消页面头部,全屏展示!
  • 鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题
  • IBus 和 Fcitx 框架下的rime输入法引擎
  • windows文件拷贝给wsl2的Ubuntu
  • Halcon 3D分割,筛选,矫正
  • 二十三种设计模式之命令模式