我有一个React项目,我在上面运行了npm run build
,它为我做了一个生产构建。
<script src="./static/js/5.a4bfdba9.chunk.js"></script>
如您所见,路径集为./static/js/
但我希望将路径设置为./static/dashboard/js/5.a4bfdba9.chunk.js
我不知道在哪里或做什么改变,以确保每次运行构建时,它都采用我指定的路径,而不是默认路径?
**注意:**我查看了package.json
中的"homepage": "."
属性,但更改此属性只会在/static/js/
之前附加一个路径
3条答案
按热度按时间bjp0bcyl1#
您需要更新webpack配置来实现这一点。有多种方法可以做到这一点:
1.修补程序包
1.React-应用-重新布线
我提供了
patch-package
的步骤。你需要修改react-scripts包中的
config/webpack.config.js
文件,这是一个git diff,包含了你需要做的修改:现在,如果您对
node_modules/react-scripts/config/webpack.config.js
进行这些更改,您将得到输出到您想要的文件夹中的文件,并且index.html也将具有正确的路径。但是如果你安装/卸载任何软件包,node_modules中的更改都会被覆盖。要保存这些更改,你可以使用patch-package,它会在安装后将你的更改写入node_modules。
以下是安装补丁包的步骤,您可以阅读他们的自述文件了解更多细节:
yarn add patch-package postinstall-postinstall
1.在package.json的脚本部分添加以下内容:
"postinstall": "patch-package"
1.运行patch-package以创建. patch文件:
npx patch-package some-package
1.提交修补程序文件以与您的团队共享修复程序
git add patches/react-scripts+4.0.3.patch
git commit -m "change output dir structure in react-scripts"
我也创建了一个git repository供您参考。
mv build/ dist/
改变create react应用程序的设置,使其输出到不同的文件夹将是非常复杂的。但你可以在构建完成后移动文件,这是非常简单的。
在您的package.json中有:
您可以添加另一个名为
postbuild
的脚本,它在构建之后执行一些操作,并将由npm/Yarn自动调用。这应该会将文件移动到不同的文件夹。
7tofc5zh2#
现在有了更好的解决方案。从hashrocket:
当我构建CRA应用程序时,我会获得以/static开头的资产(css、图像)路径。如果我将应用程序部署到
https://something.com/myapp
,则应用程序将尝试访问https://something.com/static/asset.css
处的资产路径。这不是资产所在的位置。资产所在的位置为https://something.com/myapp/static/asset.css
。Create React App允许您在
package.json
文件中使用homepage属性更改构建资产的前缀。您可以将其设置为myapp:
然后,资产的路径为
/myapp/static/asset.css
在我的示例中,我对
package.json
进行了以下更改:这是因为我有一个nginx反向代理服务
/search
到一个不同的端点,所以我所有的静态资产必须从/search/static
服务。3z6pesqy3#
以防其他人遇到类似的问题。我的问题是项目名称被前置到静态路径。
因此路径为
/{project-name}/static/5.a4bfdba9.chunk.js
而不是/static/5.a4bfdba9.chunk.js
按照提供的解决方案,我遇到了一个注解,指定“公共路径”是从主页推断出来的。在
package.json
中,我的主页url包括项目名称。错误“主页”:“https://{URL}.io/项目名称”
正确“主页”:“https://{URL}.io/项目名称”
从此URL中删除项目名称解决了此问题。