Angular 5在多个站点上进行生产构建部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular 5在多个站点上进行生产构建部署相关的知识,希望对你有一定的参考价值。

Angular 5在多个站点上进行生产构建部署

想要生成一个应该适用于任何位置/域的角度构建。这可以通过单个构建生成来实现。

我使用下面的命令生成构建

ng build --prod --base-href="www.site1.com/app-name/web"

其他网站也是如此

ng build --prod --base-href="www.site2.com/app-name/web"
ng build --prod --base-href="www.site3.com/app-name/web"

我想生成一次构建,以便我可以在多个位置进行部署。

任何人遇到过。?

答案

不要在base-href中指定整个URL。只需使用/app-name/web

另一答案

--base-href flag帮助您将<base href="/">标签添加到您的html文件。这有助于解决应用程序中资源(REST API,图像,JS等)的相对URL。

我不清楚你的基地href中有什么“www.site1.com”?它是目录或服务器名称?

通常对于任何Web应用程序URL,您有以下重要部分:

[protocol]://[HostName]:[port]/[AppName]

如果没有提供端口,它将使用默认端口,具体取决于协议(http使用80作为默认端口)

几个例子: -

http://www.site1.com/app-name/web

http://www.site1.com/my-app/web

http://www.site2.com:8080/app-name/web

https://www.site3.com/my-app

需要注意的重要一点是,您的Web服务器公开了可以托管Web应用程序的端点(协议+主机+端口)。然后,您的应用程序可以在不同的路径下访问其他子应用程序(请参阅示例URL#1和#2)。

现在,如果您尝试在不同的Web服务器上运行相同的应用程序,那么只需将应用程序目录提供给base-href参数即可。

如果您尝试在同一Web服务器下运行多个子应用程序,则必须生成不同的构建,为--base-href参数提供不同的值。

另一答案

你可以改变你的package.json看起来像

"scripts": {
    ...
    "build_site1": "ng build --prod --base-href='www.site1.com/app-name/web'--output-path=dist/site1",
    "build_site2": "ng build --prod --base-href='www.site2.com/app-name/web'--output-path=dist/site2",
    "build_site3": "ng build --prod --base-href='www.site3.com/app-name/web'--output-path=dist/site3",
    "build_all": "npm run build_site1 && npm run build_site2 && npm run build_site3"
 }

然后跑

npm run build-all

您将在不同的子文件夹或dist中拥有所有已构建的项目

另一答案

生成构建应用程序构建的单个命令

ng build --prod --base-href="/cms-dev/" --output-hashing=all

如果您想要忽略任何Build问题,可以在命令中添加以下选项。 --aot = FALSE

以上是关于Angular 5在多个站点上进行生产构建部署的主要内容,如果未能解决你的问题,请参考以下文章

在同一个Angular Workspace中将多个Angular应用程序部署到Azure

如何使用 webpack 和 angular2 为生产部署代码

我无法在Digital Ocean上进行远程部署

如何在 Joomla 中使用源代码控制,同时允许用户继续在生产服务器上进行内容更改?

多个 Angular 库在生产模式下不起作用

在GitHub Actions上进行Flutter 的测试和部署