node.js - npm build 如何通过变量或脚本更改 package.json - 主页值
问题描述
我使用创建了我的应用程序create-react-app
,并使用它npm run build
来构建生产包。
我需要将应用程序放在不同客户的网站上,每个客户都将应用程序放在不同的子文件夹中。
例如
客户端A:https://clientA.com/myApp
客户端B:https://clientB.com/UAT/myApp
客户端C:https://clientC.com/webApps/myApp
每次构建包时,对于不同的子文件夹,我都需要修改 中的homepage
值package.json
,构建包并多次重复此步骤。
我的手动步骤如下:
- 修改
"homepage": "myApp"
>>npm run build
保存构建文件夹进行部署 - 修改
"homepage": "/UAT/myApp"
>>npm run build
保存构建文件夹进行部署 - 修改
"homepage": "/webApps/myApp"
>>npm run build
保存构建文件夹进行部署 - 不断重复上述操作......
我该如何改善这种情况?我怎样才能构建一次以适应所有不同的路径?
例如,我可以在homepage
值中使用变量并将其设置在环境变量中吗?
或者,我可以写一个脚本来做一些事情吗?我希望简化这个编译步骤,最好是执行一次构建或构建脚本。
感谢您的任何帮助或建议。
解决方案
PUBLIC_URL
构建时可以使用环境变量。构建命令如下所示:
PUBLIC_URL=https://clientA.com/myApp npm run build
您可以创建 npm 脚本来简化它,例如:
{
...
"scripts": {
"build-clientA": "PUBLIC_URL=https://clientA.com/myApp react-scripts build",
"build-clientB": "PUBLIC_URL=https://clientB.com/UAT/myApp react-scripts build",
}
...
}
如果您想为所有客户端执行一个命令,构建和移动build
文件夹的简单 bash 脚本应该可以正常工作,它看起来像:
PUBLIC_URL=https://clientA.com/myApp react-scripts build && mv build clientA
PUBLIC_URL=https://clientB.com/UAT/myApp react-scripts build && mv build clientB
推荐阅读
- android - 是否可以将 url 保存在值/字符串中,然后在 Android Studio 中使用改造时访问它?
- html - 如何仅使用 HTML 使下拉菜单项中的父元素具有可见焦点
- numpy - Keras,从一个实例预测标签时的尺寸不匹配
- c# - gmail api 发送邮件不起作用 C# 控制台应用程序(身份验证范围不足)
- python - 尝试操作字符串时在 codewars 上收到退出代码错误
- 3d - 求两个立方体的交集体积
- r - 提高从 R 中的 Rest Api 提取数据的速度
- c - 使用 ConnectEx + IOCP 时提取本地端点信息(IP 地址和端口)
- firebase - 将通过 Firebase Cloud Function 授予的访问令牌与用户实例相关联
- java - 将数据库数据写入 Google 表格。Java、谷歌表格 API