将单个Angular 5项目部署到具有不同URL的多个客户端

时间:2018-08-01 06:52:56

标签: angular angular5 angular-routing

我正在为新项目使用Angular 5.2版本。我已使用URL将其部署到DEV位置

http://XX.XX.XX.XX/myDev/app/login

当我运行ng build命令时

ng build -aot -ec --prod --base-href=/myDev/

现在,我想为多个客户端运行该应用程序,URL将会更改为类似的内容

http://XX.XX.XX.XX/myDev/**Client-X**/app/login
http://XX.XX.XX.XX/myDev/**Client-Y**/app/login

Client-X和Client-Y是IIS中的虚拟目录。

请提出建议,在执行base-href的同时如何运行此应用程序并对ng build进行更改

在我的情况下,我将进行一次部署,但不同的URL指向同一软件包。

2 个答案:

答案 0 :(得分:2)

您可以通过为每个客户端创建单独的环境文件来使用environment.ts文件。每个环境都应包含baseURL const变量,该变量将在运行时代码中提供。

ng build --prod --env=environment-clientA

希望,这会有所帮助

答案 1 :(得分:0)

我正在使用令牌替换来实现。

因此,当我完成生产时,我所有的URL或环境。prod.ts将具有令牌#{CLIENT_URL},依此类推,这意味着已编译/捆绑的文件将具有无效的url或配置设置,这也意味着无需进行修改(替换)我的捆绑包将无法使用。

构建后,我将收到工件,然后每个部署都将替换并放置其自己的属性。

在VSTS中(如果您是天蓝色的用户),扩展名https://marketplace.visualstudio.com/items?itemName=qetza.replacetokens将被替换,但是您可以编写自己的脚本

好处是,在构建解决方案后,您始终将相同版本部署到所需的任何环境。

因此,当您为客户1部署时,您将所有文件#{CLIENT_URL}替换为https://client1.com,以替换具有其他URL的其他客户。