当前位置: 首页 > 面试题库 >

将react build输出合并到单个js文件中

百里智勇
2023-03-14
问题内容

运行后npm run build,结果index.html类似于:

<script>!function (i) { function e(e) { for //rest omitted
<script src="/static/js/2.3f294f32.chunk.js"></script>
<script src="/static/js/main.7b9daa35.chunk.js"></script>

第一个<script>元素是我已提取到名为的文件的内联javascriptloader.js

<script src="/loader.js"></script>
<script src="/static/js/2.3f294f32.chunk.js"></script>
<script src="/static/js/main.7b9daa35.chunk.js"></script>

这可行,但我想将 所有3个文件合并为一个文件

我尝试使用filesmerge.com合并JS文件,但这在引用单个文件时导致错误:

output.min.js:1 Uncaught TypeError: (intermediate value)(...) is not a function
at output.min.js:1

然后,我尝试使用jscompress.com进行合并,尽管这不会产生任何错误,但未呈现react
root元素

我也尝试过在create-react-app repo上建议的此解决方案,该解决方案不起作用。没有产生错误,但没有呈现任何react元素(页面保持空白)


问题答案:

简而言之: 可能,但不切实际
。为什么?您的应用程序将不再是渐进式的,单个js文件可能会变得非常大(性能降低,而webpack却没有提供任何代码拆分优势)。

虽然我既不喜欢create-react-app也不将所有内容都捆绑到一个bundle.js文件中,但是您首先要弹出:yarn eject或者npm run eject-您可能可以使用一些第3方软件包来覆盖而不弹出,但是我将其留给您弄清楚。

然后,您需要转到config/webpack.config.js并执行以下操作:

  • 删除InlineChunkHtmlPlugin从进口要求下plugins:,删除isEnvProduction && shouldInlineRuntimeChunk && new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime-.+[.]js/])它创建了一个内部的块文件列表index.html文件时,建筑物
  • 在下output:,更改filename:filename: "static/js/bundle.min.js",
  • 在下output:,删除该chunkFilename:属性,因为您在生产期间不再对js文件进行分块
  • 在下optimization:,删除splitChunks:属性,因为您在构建时不再拆分块
  • 在下optimization:,设置runtimeChunk:runtimeChunk: false避免在构建时创建runtime-chunk.js文件
  • 在下plugins:MiniCssExtractPlugin通过更改filenamefilename: "static/css/main.min.css",和删除选项,将选项更改为仅输出单个CSS文件chunkFileName:

工作仓库 :https :
//github.com/mattcarlotta/cra-single-
bundle

我还向package.json仓库添加了两个启动脚本

1.)测试生产版本;运行yarn prodnpm run prod 编译源代码之后。

2.)要分析Webpack捆绑包,请运行yarn analyzenpm run analyze查看块分布图。



 类似资料:
  • 我想在AWS中创建一个数据处理管道,以最终将处理后的数据用于机器学习。 我有一个Scala脚本,它从S3获取原始数据,对其进行处理并将其写入HDFS,甚至使用Spark CSV将其写入S3。如果我想使用AWS机器学习工具来训练预测模型,我想我可以使用多个文件作为输入。但如果我想使用其他东西,我认为最好是接收单个CSV输出文件。 目前,由于我不想为了性能目的而使用重新分区(1)或合并(1),我已经使

  • 问题内容: 我在Web应用程序中使用jquery,我需要将更多jquery脚本文件加载到单个页面中。 Google建议我将所有jquery脚本文件合并到一个文件中。 我怎样才能做到这一点? 问题答案: 在Linux上,您可以使用简单的Shell脚本将多个javascript文件合并为一个。它利用了Closure Compiler在线服务,因此生成的脚本也得到了有效压缩。

  • 我在同一个文件夹中有两个文件:chapter1。Rmd和第2章。Rmd,包括以下内容: 第一章Rmd 第2章Rmd 如何将它们组合成一个pdf输出? 当然,渲染(input=“chapter1.Rmd”,output\u format=“pdf\u document”)可以完美地工作,但渲染(input=“chapter1.Rmd”,input=“chapter2.Rmd”,output\u fo

  • 如果我有一些文件,每个文件都有一个页面,我想使用 我在这里读到了几十个关于相同的问题,但大多数问题都已经过时或不再适用于

  • 问题内容: 我已将syslog设置为使用以下过滤器将日志发送到logstash: 我的应用程序之一的典型消息将具有初始状态和job_id: 几分钟后,另一个日志将具有相同的log_id,不同的状态和处理时间: 这些字段已正确加载,但是创建了两个文档。我希望只为初始日志创建一个文档,然后用第二个日志来更新第一个日志,这意味着更新后的文档将具有以下字段: 如您在logstash conf输出中所看到的