如何修改我的webpack项目,使其从一个谨慎的位置而不是从相对路径进行引用?

时间:2019-06-03 21:31:12

标签: reactjs webpack

我正在研究一个小型的React项目,该项目已构建,然后被导入到更大的应用程序中。需要明确的是,我无权更改即将概述的内容。该应用程序将按照其构建和部署的方式进行操作,并且我无法更改项目适合其所包含的较大应用程序的方式。但是,我也许可以对构建步骤进行一些小的改进,这些构建步骤使我们的项目可以集成到父应用程序中。

我的团队React项目是一个使用Webpack构建的CRA项目。构建应用程序后,将在webpack中构建CSS和JS文件,并将其托管在Azure中。在完成那部分部署后,另一个应用程序将构建一个load.js文件,以在我们的主要React应用程序index.html中引用和使用该文件,以提取我们的代码。为了进一步说明,我们的文件是从Azure服务器托管的,该Azure服务器的域与主应用程序的域不同。

在设置要在主React应用程序中使用的小项目的过程中的某个时刻,main.[hash].js文件中发现一个错误,导致该文件无法正常工作。具体来说,以下行存在问题:

u.src=e.p+"static/js/"+({}[t]||t)+"."+{0:"bc79965c"}[t]+".chunk.js";

为了使我们的应用程序可以在开发环境(最终在生产环境)中工作,我们必须创建一个部署步骤,该步骤需要在main.[hash].js文件中搜索"u.src=e.p",并将其替换为“ {{1} }。

但是,今天,我进一步检查了u.src={insert the root of our hosted project files from Azure}"代码,以找出main...js变量的意义。我注意到webpack将e.p定义为简单的“ /”或项目的预期根目录。令人反感的代码正在尝试获取root的值,以便它可以找到应该与e.p文件配对的相应chunk.js文件。在我们的情况下,main.js不在根文件夹中,因为它或我们的主文件都没有托管在父React项目的静态文件夹中。

我的问题很简单-在webpack(或其他)配置文件中,是否可以通过某种方式指定构建这些文件时应考虑的根路径?具体来说,是否有一种方法可以覆盖存储在webpack输出的chunk.js文件的最小e.p值中的哪个值中,以便提供我可以指定的完全限定的URL?

此外,我将省略冗长的解释,但是在main...js块中输出应用程序是不可行的。在我们的情况下,这不是一个可行的解决方案。

关于Murilo Cruz ANSWER的注意事项

我已经知道<iframe />属性,但这不是解决方案。这用于向流程添加相对路径。可以肯定的是,我试图将我们的网址添加到"homepage": "http://www.myhomepage.com/relativePath"包属性中,但这并不能解决问题。

1 个答案:

答案 0 :(得分:0)

实际上,有a section on the documentation指定了如何按照您所说的完全构建您的create-react-app项目。

您只需在您的create-react-app项目根目录的package.json上添加一个属性:

"homepage": "http://mywebsite.com/relativepath",