You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建轻量极简React项目?依赖少易理解且体积≤10MB

嘿,太懂你这种需求了——create-react-app自带的一堆冗余依赖确实很头疼,尤其是你只想搭个轻量干净的React项目时。要打造一个体积≤10MB、依赖极少、代码清晰可控的React项目,完全可以从零手动搭建,不用依赖大而全的脚手架。下面是我实操过的完整步骤:

1. 初始化项目,只装必要依赖

首先创建一个空文件夹,初始化npm项目:

mkdir tiny-react-project && cd tiny-react-project
npm init -y

然后只安装核心生产依赖和最少的开发依赖:

# 核心生产依赖(只有这俩!)
npm install react react-dom

# 开发依赖:仅用于转译JSX和打包
npm install --save-dev @babel/core @babel/preset-react @babel/preset-env babel-loader webpack webpack-cli webpack-dev-server html-webpack-plugin

这里的依赖加起来,node_modules体积大概在6-8MB左右,完全符合你的10MB上限要求。

2. 配置Babel和Webpack(极简版)

创建两个配置文件,只保留最必要的功能:

2.1 Babel配置(.babelrc)

用来转译JSX和ES6+语法,让浏览器能识别:

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ]
}

2.2 Webpack配置(webpack.config.js)

负责打包代码、处理JSX、生成HTML文件:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/index.jsx', // 项目入口文件
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
    clean: true // 每次打包清空dist文件夹
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        use: 'babel-loader' // 用Babel转译JS/JSX
      }
    ]
  },
  resolve: {
    extensions: ['.js', '.jsx'] // 导入时可以省略后缀
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/index.html' // 用自定义的HTML模板
    })
  ],
  devServer: {
    static: './dist',
    hot: true // 热重载,开发时不用手动刷新
  },
  mode: process.env.NODE_ENV === 'production' ? 'production' : 'development'
};
3. 编写核心代码(极简结构)

创建项目的核心文件结构,只有必要的文件:

tiny-react-project/
├── public/
│   └── index.html
├── src/
│   └── index.jsx
├── .babelrc
├── webpack.config.js
└── package.json

3.1 编写HTML模板(public/index.html)

只需要一个挂载React的根节点:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Tiny React Project</title>
</head>
<body>
  <div id="root"></div>
</body>
</html>

3.2 编写React组件(src/index.jsx)

写最简单的React代码,没有冗余:

import React from 'react';
import ReactDOM from 'react-dom/client';

const App = () => {
  return <h1>Hello, Tiny React!</h1>;
};

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
4. 添加npm脚本(package.json)

在package.json的scripts里添加开发和打包命令:

"scripts": {
  "start": "webpack-dev-server",
  "build": "NODE_ENV=production webpack"
}
  • 运行npm start:启动本地开发服务器,支持热重载
  • 运行npm run build:生成生产环境打包文件,体积极小
5. 关键体积优化技巧
  • 生产模式自动优化:NODE_ENV=production模式下,Webpack会自动开启tree-shaking(移除未使用的代码)、代码压缩、混淆,打包后的bundle.js只有约100KB左右(gzip后更小)
  • 拒绝冗余依赖:除非真的需要,不要加react-router、redux、axios这类库——能用React原生的useState/useContext管理状态,用原生fetch发请求
  • 按需引入:如果确实需要第三方库,优先选择支持ES模块的版本,确保Webpack能tree-shake掉未使用的部分
  • 清理临时依赖:如果用webpack-bundle-analyzer分析体积(临时装),分析完记得卸载它,避免增加node_modules体积
验证体积

完成后,整个项目(包括node_modules)的体积大概在7-9MB,完全在10MB以内;生产打包后的dist文件夹只有几百KB,部署起来超轻便。

这样搭建的项目完全由你掌控,没有任何多余的代码或依赖,代码结构清晰易懂,完美适配你的需求!

内容的提问来源于stack exchange,提问作者A.J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:23:27