当前位置:首页 > React

react打包如何不删除源码

2026-01-25 17:32:30React

配置自定义构建输出目录

在项目根目录下创建或修改 craco.config.js(使用CRACO)或 config-overrides.js(使用react-app-rewired),通过覆盖Webpack配置保留源码。以下示例使用CRACO:

const path = require('path');
module.exports = {
  webpack: {
    configure: (webpackConfig) => {
      webpackConfig.output.path = path.resolve(__dirname, 'build_with_source');
      return webpackConfig;
    }
  }
};

修改package.json构建脚本

调整构建命令以使用自定义配置工具。对于CRACO用户:

"scripts": {
  "build": "craco build",
  "build:with-source": "react-scripts build && cp -r src build/src"
}

手动复制源码到构建目录

在构建完成后执行文件复制操作。Linux/macOS系统可使用shell命令:

react-scripts build && cp -r src build/src

Windows系统可使用PowerShell命令:

react-scripts build && xcopy /E /I src build\src

使用环境变量控制源码保留

创建 .env 文件添加配置:

GENERATE_SOURCEMAP=true
INLINE_RUNTIME_CHUNK=false

配置Webpack的SourceMap选项

通过自定义配置启用详细source map:

// craco.config.js
module.exports = {
  webpack: {
    configure: {
      devtool: 'source-map'
    }
  }
};

使用文件系统插件自动备份

安装copy-webpack-plugin并配置:

const CopyPlugin = require("copy-webpack-plugin");
module.exports = {
  webpack: {
    plugins: [
      new CopyPlugin({
        patterns: [
          { from: "src", to: "src_backup" }
        ],
      }),
    ],
  }
};

创建构建后脚本

添加Node.js脚本postbuild.js

const fs = require('fs-extra');
fs.copySync('./src', './build/src');

在package.json中添加:

react打包如何不删除源码

"scripts": {
  "postbuild": "node postbuild.js"
}

以上方法可根据实际需求组合使用,注意生产环境保留源码可能带来安全风险,建议仅用于开发或测试环境。

标签: 源码react
分享给朋友:

相关文章

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

react如何刷新

react如何刷新

刷新React组件的方法 使用状态更新触发重新渲染 通过更新组件的状态可以触发重新渲染。React会在状态变化时自动重新渲染组件。 const [count, setCount] = useStat…

react如何重置

react如何重置

重置 React 应用的状态 使用 useState 钩子重新初始化状态变量是最直接的方法。将状态变量重置为初始值或空值即可完成重置。 const [count, setCount] = useSt…

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…

uniapp项目源码

uniapp项目源码

Uniapp 项目源码获取方式 官方示例与模板 Uniapp 官方提供了多个开源项目模板和示例,涵盖基础框架、UI组件库等。可通过以下途径获取: 在 DCloud 插件市场 搜索“uniapp模…