如何更改 React 项目中的生产构建静态文件夹路径?

2024-06-25

我有一个React我运行的项目npm run build它为我制作了一个生产版本。问题是它给了我注入以下样式表index.html

<script src="./static/js/5.a4bfdba9.chunk.js"></script>

可以看到,设置的路径是./static/js/

但我希望将路径设置为./static/dashboard/js/5.a4bfdba9.chunk.js

我不知道要在哪里或更改什么以确保每次运行构建时都采用我指定的路径而不是默认路径?

Note:我在看"homepage": "."属性在package.json但改变这个只会在之前添加一个路径/static/js/


Update:

您需要更新 webpack 配置才能实现此目的。有多种方法可以做到这一点:

  1. 反应脚本弹出(不推荐)
  2. 补丁包
  3. 反应应用程序重新连线

我正在提供步骤patch-package.
您需要对文件进行更改config/webpack.config.js的react-scripts包。这是您需要进行的更改的 git diff:

diff --git a/node_modules/react-scripts/config/webpack.config.js b/node_modules/react-scripts/config/webpack.config.js
index 26c2a65..ad29fbd 100644
--- a/node_modules/react-scripts/config/webpack.config.js
+++ b/node_modules/react-scripts/config/webpack.config.js
@@ -212,13 +212,13 @@ module.exports = function (webpackEnv) {
       // There will be one main bundle, and one file per asynchronous chunk.
       // In development, it does not produce real files.
       filename: isEnvProduction
-        ? 'static/js/[name].[contenthash:8].js'
+        ? 'static/dashboard/js/[name].[contenthash:8].js'
         : isEnvDevelopment && 'static/js/bundle.js',
       // TODO: remove this when upgrading to webpack 5
       futureEmitAssets: true,
       // There are also additional JS chunk files if you use code splitting.
       chunkFilename: isEnvProduction
-        ? 'static/js/[name].[contenthash:8].chunk.js'
+        ? 'static/dashboard/js/[name].[contenthash:8].chunk.js'
         : isEnvDevelopment && 'static/js/[name].chunk.js',
       // webpack uses `publicPath` to determine where the app is being served from.
       // It requires a trailing slash, or the file assets will get an incorrect path.
@@ -676,8 +676,8 @@ module.exports = function (webpackEnv) {
         new MiniCssExtractPlugin({
           // Options similar to the same options in webpackOptions.output
           // both options are optional
-          filename: 'static/css/[name].[contenthash:8].css',
-          chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',
+          filename: 'static/dashboard/css/[name].[contenthash:8].css',
+          chunkFilename: 'static/dashboard/css/[name].[contenthash:8].chunk.css',
         }),
       // Generate an asset manifest file with the following content:
       // - "files" key: Mapping of all asset filenames to their corresponding

现在,如果您进行这些更改node_modules/react-scripts/config/webpack.config.js您将获得输出到所需文件夹的文件,并且 index.html 也将具有正确的路径。
但是如果您安装/卸载任何软件包,node_modules 中的更改将被覆盖。要保留这些更改,您可以使用补丁包 https://www.npmjs.com/package/patch-package,这将在安装后将您的更改写入node_modules。

以下是设置补丁包的步骤,您可以阅读他们的自述文件 https://github.com/ds300/patch-package#readme更多细节:

  1. yarn add patch-package postinstall-postinstall

  2. 在 package.json 的脚本部分添加以下内容:
    "postinstall": "patch-package"

  3. 运行 patch-package 以创建 .patch 文件:
    npx patch-package some-package

  4. 提交补丁文件以与您的团队共享修复程序
    git add patches/react-scripts+4.0.3.patch
    git commit -m "change output dir structure in react-scripts"

我创建了一个git 存储库 https://github.com/vaibhavhrt/cra-custom-build-dir-structure也供你参考。

旧答案:

Warning:不适用于移动构建文件夹的内容。只能移动整个构建文件夹。例如:mv build/ dist/

更改创建反应应用程序的设置以使其输出到不同的文件夹将非常复杂。但是您可以在构建完成后移动文件,这非常简单。

在你的 package.json 中你有:

"scripts": {
  "build": "react-scripts build"

您可以添加另一个名为postbuild它会在构建后执行一些操作,并由 npm/Yarn 自动调用。

"postbuild": "mv build/ dist/"

这应该将文件移动到不同的文件夹。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改 React 项目中的生产构建静态文件夹路径? 的相关文章

  • Javascript 字符串/整数比较

    我在 HTML 中存储一些客户端参数 然后需要将它们作为整数进行比较 不幸的是我遇到了一个我无法解释的严重错误 该错误似乎是我的 JS 将参数读取为字符串而不是整数 导致我的整数比较失败 我生成了一个错误的小例子 我也无法解释 运行时以下返
  • $(document).ready 回调何时执行?

    假设我们附加一个 click http api jquery com click 锚点的处理程序 a 中的标签 document ready http api jquery com ready 打回来 该处理程序将取消默认操作 遵循href
  • React - useState 的 setter 函数可以改变吗?

    useState 的 setter 是否能够在组件生命周期内更改 例如 假设我们有一个useCallback这将更新状态 如果 setter 能够更改 则必须将其设置为回调的依赖项 因为回调使用它 const state setState
  • 将值传递给映射函数 - CouchDB

    我想知道是否可以将值传递给 couchDB 设计文档中的映射函数 例如 在下面的代码中 可以传递用户输入的值并使用该值来运行地图函数 也许我可以传递用户UserName当他们登录时 然后根据地图功能显示视图 function doc if
  • 滚动动态数据时,React Native“onViewableItemsChanged”不起作用

    我有一个 React Native FlatList 基于文档 https facebook github io react native docs flatlist html onviewableitemschanged I used o
  • 设置三个输入数字的最大值

    我有三个输入数字
  • GraphQL 错误字段类型必须是输入类型,但得到:

    这是突变 const createNotebook mutationWithClientMutationId name CreateNotebook inputFields token type GraphQLString details
  • 在 Bootstrap 选择器上使用 jQuery 取消选择选项

    我对一些 UI 元素使用 Bootstrap SelectPicker 它允许用户选择多个选项并将其呈现在段落标签中的屏幕上 他们还应该能够删除选定的选项 这是我的代码 用于将选定的选项渲染到屏幕上 以便每个选项旁边都会显示一个 X 单击它
  • 如何在 React Native 应用程序中的 iOS 后台运行 socket.io?

    我在用socket io in an iOS React Native v0 20 app 该应用程序会跟踪我的位置 当我的位置发生变化时 它会向服务器发送一条消息 如果套接字连接丢失 服务器会发送电子邮件通知我 我在后台进行位置跟踪反应本
  • 解析字符串:提取单词和短语 [JavaScript]

    我需要在以空格分隔的术语列表中支持确切的短语 用引号引起来 因此 用空格字符分割相应的字符串已经不够了 Example input foo bar lorem ipsum baz output foo bar lorem ipsum baz
  • Lighthouse 多个 URL

    我需要对一个网站进行全面审核 但我想知道是否有任何方法可以让 Lighthouse 做到这一点 我知道他们不支持完整的站点审核或多个 URL 但我发现可以使用 bash 脚本来完成 因此 我将不胜感激对此案的任何帮助 或者您可能会推荐任何灯
  • 尝试将远程图像转换为 Base64 数据时出现 CORS 错误[重复]

    这个问题在这里已经有答案了 我需要将远程图像转换为给定其 URL 的 base64 但我遇到了 CORS 错误 并且不确定如何解决 我遵循了这个问题的一些解决方案 如何使用javascript将图像转换为base64字符串 https st
  • 过滤数据表中的行

    我目前的 JQuery 插件 DataTables 工作正常 并且我在页面顶部插入了一个按钮来进一步过滤列表 我还使用了 DataTables 内置的搜索栏 我希望按钮向下过滤表格 并只显示包含特定值的行 下面是我一直在做的事情 但似乎没有
  • 在 JavaScript/CoffeeScript 中确定一个数组是否包含另一个数组的内容

    在 JavaScript 中 如何测试一个数组是否包含另一个数组的元素 arr1 1 2 3 4 5 8 1 10 2 3 4 5 9 function name arr1 gt true 没有 set 函数可以执行此操作 但您可以简单地执
  • 为什么我的数据没有存储到我的 Firebase 实时数据库中?

    我正在尝试为网络应用程序制作一个注册页面 这会将数据发送到 firebase 数据库 我已阅读官方 firebase 文档并按照说明写入数据 但什么也不会写 在我的数据库控制台中 它显示的所有内容都是空 而不是我的数据 我没有收到控制台错误
  • React cloneElement 未设置键

    我正在构建一个动态生成键的表控件 我理解这可能不是一个好主意 我想键应该与其代表的数据唯一关联 否则 React 只能为我们生成唯一的 id 但无论哪种方式似乎没有设置按键 我不知道为什么 表中的行是用可以找到的函数生成的here http
  • 如何拦截javascript中innerHTML的变化?

    我需要拦截网页内单元格内容的任何更改 以下代码显示 addEventListener 不起作用 function modifyText alert var el document getElementById mycell el inner
  • 为什么我编写的 npm 模块在使用 create-react-app 创建项目后会安装这么多包?

    我写了这个 npm 模块 反应心跳 https www npmjs com package react heartbeat using nwb https github com insin nwb 当我在新项目中安装此模块时 npm i r
  • 如何使用 jQuery 解析 JavaScript 对象

    jQuery JavaScript 中用于解析 JSON 对象并返回键 值对的 foreach 等效项是什么 JSON 对象 是什么意思 JSON 是一种用于序列化对象的文本格式 如果要循环访问通过反序列化 JSON 字符串获得的对象中的属
  • 如何将国家/地区代码与电话号码分开?

    我的数据库中有很多电话号码 例如 1 123 456 7890 我要做的是将国家 地区拨号代码 在本例中为美国 加拿大的 1 与电话号码分开 我尝试创建所有国家 地区的 JSON 列表 并在加载页面时将电话号码和国家 地区代码分开 它工作正

随机推荐

  • React - 防止标签切换时焦点脱离模式

    我自己构建了一个反应模式 当我在模式打开时按 Tab 键时 焦点仍然转到背景页面 如何将焦点限制在模态框内的组件内 下面的逻辑应该是什么 onKeyPress e if e keyCode 9 e preventDefault logic
  • AttributeError:使用 Flask 无模式登录时,模块“flask_login.login_manager”没有属性“user_loader”

    我有以下代码 我尝试使用 Flask 进行身份验证 from flask import Flask from flask login import LoginManager login manager from auth auth impo
  • Three.js:相机绕球体飞行?

    在 Three js 使用 JavaScript WebGL 中 如何创建一个以固定高度 固定前进速度和相对于球体的固定方向围绕球体飞行的相机 用户只能向左转向和正确的 想象一架飞机在一根看不见的绳子上飞向地球的中心 在地面附近飞行并且总是
  • UCanAccess:向现有表添加列

    我有一个正在运行的 Java 项目 它使用 Access accdb 数据库来存储数据 我正在对我的程序进行更新 以便为用户提供更多功能 为此 我需要向填充数据的现有表添加一列 当我研究时 我发现 UCanAccess 不支持 ALTER
  • ColdFusion 11 中的自动类型转换

    我正在将应用程序从 ColdFusion 9 迁移到 ColdFusion 11 在现有代码中 有一个变量分配给false
  • 如何为 WPF 工具包图表提供样式

    我在 WPF 应用程序中使用 WPF Toolkit Chart 和 PieChart 我想将饼图图片中的默认白色背景更改为透明 如何提供风格来实现这一目标 WPF 旨在允许您通过 XAML 设置控件样式 不是代码 还可以通过样式使饼图中的
  • 基准测试socket.io

    我想对我的 socket io 服务器进行基准测试 我想测试服务器可以处理多少并行连接和消息 但是当我用大约 200 个 websocket 启动基准测试几分钟后 我的 socket io 服务器崩溃了 我尝试使用node js的集群模块将
  • python os.path.exists() 对于存在的 nfs 挂载目录文件失败

    我基本上有一个用于网站的网络服务器和另一个仅存储文件的网络服务器 文件服务器通过安装其目录之一连接到主服务器 该网站运行 Django 所以我主要处理 python 不管怎样 我似乎遇到了一些问题 文件被报告为不存在 即使它们实际上存在 基
  • 如何在 Braintree Paypal 结帐中添加税费和运费

    我正在使用 Braintree Paypal Checkout 它对我来说工作正常 但我无法添加税费和运费 我试图获取一些信息 但这对我来说也不起作用 这是我当前的 Braintree 代码查看 var form document quer
  • Objective C iPhone 何时将对象引用设置为 nil

    我使用 Objective C 和 Cocoa 框架进行开发已经有一段时间了 然而 我仍然不太清楚 我什么时候应该将对象引用设置为 nil 我知道建议在释放具有委托的对象之前执行此操作 并且您还应该在保留子视图的 viewDidUnload
  • PHP中通过Hive/Thrift查询数据库不起作用

    我正在尝试通过 PHP 中的 Hive Thrift 查询数据库 但是 我不断收到错误 TSocket timed out reading 4 bytes from XYZ 我正在使用来自的代码 https cwiki apache org
  • 即使使用缓存内存和 asynctask,使用 viewpager+imageview 时也会出现内存不足错误

    请问有人之前在 viewpager 中添加了很多图像视图吗 我有一个活动调用片段类来创建包含图像的片段到视图分页器中 并且该片段类包含缓存图像 如果缓存内存中尚不存在图像 并调整图像大小并让可绘制对象在异步任务中执行的方法减少前端任务的时间
  • 如何在 Excel VBA 中仅迭代自动筛选工作表中的行?

    需要仅迭代自动筛选范围中的行 目的是获取行索引 我尝试过这个块 For Each ele In rng RowInd ele Rows Address RowNum Split RowInd 2 Next ele 这会在 rng 中的所有
  • 替换 ASP.NET Web 表单中的 MSWord 智能引号

    我遇到一个问题 用户在 MS Word 中编写一些大块文本 然后将其粘贴到在线表单中 这些以颠倒的形式输入数据库 我可以选择哪些选项来将这些内容替换为标准报价 这些智能引号是一个 unicode 点 您所需要的只是一个简单的 String
  • 判断两个文件是否属于同一个卷

    我正在参与一些 ntfs 硬链接项目 我想知道如何确定两个文件 具有完整路径 是否属于同一卷 有几个选项可用于查找与文件关联的卷信息 找到两个文件的根路径 然后使用GetVolumeInformation http msdn microso
  • LibGDX And​​roid 游戏 - 在滚动屏幕上显示固定文本(即分数)

    我开始在 LibGDX 中编写游戏 这才刚刚开始 我已经加载了一个基本的图块地图 一个玩家精灵 可以移动角色并且屏幕 相机 滚动 完美 我在屏幕右下角有两个重叠的纹理 一个左箭头和一个右箭头 用作控制角色的手柄 我将它们放置在与player
  • 此 Android SDK 需要 Android Developer Toolkit 版本 23.0.0 或更高版本

    当我启动 Eclipse 时 出现以下错误 当我尝试从 帮助 gt 安装新软件 进行更新时 使用 eclipse 更新链接https dl ssl google com eclipse plugin 4 2 https dl ssl goo
  • 在 tkinter 中对窗口进行分组

    我有一个 tkinter 应用程序 它有一个主窗口 Tk 和一个附加窗口 Toplevel 我希望这些窗口在窗口管理器 GNOME Shell 中组合在一起 我认为必须将两个窗口的 WM CLASS 资源和 WM CLASS 名称设置为相同
  • 用于将唯一项插入数组的 Ruby 条件

    我知道如果你有一个array并将其引用为array uniq它将返回 没有任何重复项 然而 在本例中 它是一个对象数组 这是正确的 Ruby 语言吗 我希望每个电话都进入 calls数组除非call from与数组中已存在的 call fo
  • 如何更改 React 项目中的生产构建静态文件夹路径?

    我有一个React我运行的项目npm run build它为我制作了一个生产版本 问题是它给了我注入以下样式表index html 可以看到 设置的路径是 static js 但我希望将路径设置为 static dashboard js 5