Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >(角2+)构建后如何获得部署-url?

(角2+)构建后如何获得部署-url?
EN

Stack Overflow用户
提问于 2019-06-18 00:30:13
回答 2查看 1.8K关注 0票数 2

我需要知道构建时信息(ng build --this_informationangular.json),比如运行时的deploy_urlbase_href

对于base_href,我可以读取<base>标记的href属性,但是对于deploy_url没有其他选择。

有人能给我一个“角度的方式”来读取运行时的构建配置吗?

我不想在运行时更改构建配置,而只想阅读和打印。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-18 01:23:26

如果构建配置存储在angular.json中,则可以在nodeJS脚本的帮助下将与您相关的位复制到"src/assets/“文件夹中的json文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let fs = require("fs");
let angularJson = require("../angular.json");

let buildConfig = {
  baseHref: angularJson.projects.<projectname>.architect.build.options.baseHref,
  deployUrl: angularJson.projects.<projectname>.architect.build.options.deployUrl,
};

fs.writeFile(
  "./src/assets/buildConfig.json",
  JSON.stringify(buildConfig),
  {flag: ""},
  err => {
    if (err) {
      console.log(err);
    }
  }
);

// example output=> '{"baseHref": "/app", "deployUrl": "https://example.com"}'

在本例中,此脚本存储在/scripts中,如果将其存储在不同的文件夹中,则可能需要更新相对路径。还记得要包括正确的项目名称。通过更新package.json中的构建脚本,您可以在常规构建步骤之前包括此脚本,如下所示:

"build": "node ./scripts/extractBuildConfig.js && ng build"

尽管您只想获得实际部署web应用程序的实际位置,但是获得document.location (或其属性之一)、document.baseURIdocument.domaindocument.getElementsByTagName("base")[0].attributes["href"]的值可能要容易得多。

尽管如此,如果您正确地在角项目中设置了基本的href,那么文件中的所有相关路径都应该自动指向正确的位置,所以我不知道您还需要它做什么。

票数 -1
EN

Stack Overflow用户

发布于 2021-05-19 13:39:20

我也遇到了这个问题,在构建过程中,我需要deployUrl传递给我的environment.ts (和environment.prod.ts)文件。在构建时deployUrl是动态的,我的用例略有不同。我的用例:

  • 资产(js、json、css、html等)托管在我的cdn:https://{cdn}/my-app/{version}/{buildNumber}/...中。
  • 应用程序部署在我的网站:https://app.example.com/
    • 注意:所谓“部署”,我的意思是从CDN url - gives me中删除我的- gives文件,它很好地控制了部署哪个版本和构建号。

因为我的CDN随每次构建而改变,所以我不能使用从angular.json复制静态配置的公认答案。因此,我的解决方案需要几个步骤,但对我来说效果很好:

  1. 需要设置自定义webpack.config.js构建配置。您可以跟踪网Basal的文章关于如何做到这一点。
  2. package.json中设置我的构建脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- `"build:prod": "ng build --prod",`
  1. 在服务器上的构建脚本(在我的示例中是Jenkins)中,我确保将动态deployUrl传递给npm脚本。 npm & npm运行构建:prod
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- Note that `$CDN_URL` I dynamically generate during the build process (it matches the CDN pattern I listed above)
  1. 在我的environment.ts文件中添加一个静态字符串,webpack稍后将替换该字符串: 声明var __CDN_URL__:string;export环境={ production: true,deployUrl:__CDN_URL__ };
  2. 使用我的webpack.config.js__CDN_URL__变量添加到webpack的全局范围。使其在environment.ts中可用 /*解析从步骤#2 */ const argv ={ ...yargs(process.argv).argv }传递到我们的npm run build:proddeployUrl选项;/*这个配置将与角配置*/ module.exports ={ plugins:新的webpack.DefinePlugin({ __CDN_URL__:argv.deployUrl(argv.deployUrl)‘) //这将添加此变量}}合并;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- Note: I used [yargs](https://www.npmjs.com/package/yargs) to parse the `process.argv` options, but you could use anything (or even do it yourself).
- Docs for [wepack.DefinePlugin](https://webpack.js.org/plugins/define-plugin/) are kind of lacking, but it essentially creates a variable that you define.

现在,您可以通过环境配置访问动态deployUrl。这对我的用例非常有用。

我将此用于所有资产,但最值得注意的是加载翻译后的.json文件。示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// app.module.ts
import { NgModule } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

import { AppComponent } from './app.component';
import { environment } from '../environments/environment';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    // other imports
    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [HttpClient]
      }
    }),
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

export function HttpLoaderFactory (http: HttpClient) {
  // this ensures I load my translation files from my cdn url
  return new TranslateHttpLoader(http, `${environment.deployUrl}i18n/`, '.json');
}

希望这能帮上忙。干杯!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56644859

复制
相关文章
如何使用 Apache 构建 URL 缩短服务
用 Apache HTTP 服务器的 mod_rewrite 功能创建你自己的短链接。
星哥玩云
2022/07/20
2.6K0
如何内网环境下构建RTSP测试URL
最近发现好多开发者都在搜索可用的RTSP测试URL,目前公网实际可测试的RTSP URL非常少,即便是可用,分辨率和网络也非常差,不适合长期测试。
音视频牛哥
2021/03/30
2.1K0
如何构建、部署运行Flink程序
Flink程序一般的开发步骤 构建完成Flink程序之后就可以开发程序了,开发一个Flink程序的一般步骤:
百思不得小赵
2022/12/01
9380
如何构建、部署运行Flink程序
Okhttp 如何构建一个 Get 的 URL
因项目的需要,构建一个微信请求的 URL。 URL 的配置为: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_ur
HoneyMoose
2023/02/07
3280
Okhttp 如何构建一个 Get 的 URL
分库分表后,如何部署上线?
大致思路就是,挂一个公告,半夜停机升级,然后半夜把服务停了,跑数据迁移程序,进行数据迁移。
java进阶架构师
2019/01/23
9460
分库分表后,如何部署上线?
如何在部署中和部署后降低私有云成本?
无论是使用OpenStack、Azure Stack,或其他私有云平台,IT专业人员都可以 做出一些硬件和调优决策来节约成本。 私有云的成本管理是企业面临的主要挑战,因为它涉及到启动成本、降低风险和支
静一
2018/03/26
2.8K0
如何在部署中和部署后降低私有云成本?
分库分表后,如何部署上线?
大致思路就是,挂一个公告,半夜停机升级,然后半夜把服务停了,跑数据迁移程序,进行数据迁移。
java思维导图
2019/11/05
7380
分库分表后,如何部署上线?
分库分表后如何部署上线?
不要惊讶,写这篇文章前,我特意去网上看了下分库分表的文章,很神奇的是,都在讲怎么进行分库分表,却不说分完以后,怎么部署上线的。这样在面试的时候就比较尴尬了。
AI乔治
2018/09/27
1.4K0
如何使用使用 C++ 获得 shell 命令后的输出
如果是在 Windows 上,用 _popen 和 _pclose 代替 popen 和 pclose 即可。
ClearSeve
2022/02/10
2.4K0
从一个url中获得文本信息
有时候你可能需要从一个url中获取一个文本文件中的信息。 下面的例子会从我的博客页面下载大量的html信息。
EltonZheng
2021/01/22
5820
Harris角点提取后怎么匹配?
对于角点匹配算法的研究本文主要采用Harris算法提取图像中的角点,通过相似测度得到粗匹配点集,然后简单分析了两种提纯匹配点的简单聚类法和视差梯度约束法。 1. Harris算法角点检测 人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一
智能算法
2018/04/03
2.5K0
Harris角点提取后怎么匹配?
JS获取URL“#”后的值
http://localhost:62683/youli/product.htm#0 alert(GetRequest()); //获取#号值 function GetRequest() { var str = location.href var num = str.indexOf("#"); str = str.substr(num + 1); return str; }
小语雀网
2022/05/06
54.5K0
28 | PyTorch构建的模型如何上线部署
在模型实际的应用中,一般有两种使用方法,一个是跑批数据,就像我们之前跑验证集那样。比如说我们收集到了很多需要去分类的图像,然后一次性的导入并使用我们训练好的模型给出结果,预测完这一批之后程序就自动关闭了,等到下一次我们有需要的时候再启动。另外一种就是应用于线上服务,构建一个服务等待新的请求,当有请求发起的时候就接收数据,然后给出结果,在没有请求的时候,模型服务仍然处于运行的状态,只不过是等待下一个请求。
机器学习之禅
2022/12/30
2K1
28 | PyTorch构建的模型如何上线部署
OneCode :如何构建部署低代码引擎工程
低代码应用大幅降低了开发者的门槛,使得更多更大范围的群体能够参与到软件开发过程中。但前期应用中多数还是应用还是建立在特定的平台上的功能扩展。 这种先平台后应用的模式直接限制了低代码平台的应用范围,于是处于头部的低代码平台都纷纷推出了允许客户定制导出,独立发布部署的轻应用模式。使客户在完成基础的低代码模型以及应用开发后,可以快速的导出为单独的应用,根据需求部署在自己的内网或公共云虚拟主机中。本文将从低代码服务导出发布这个角度结合OneCode的DevOps设计来阐述一下低代码的服务发布设计。
onecode
2023/04/05
7960
OneCode :如何构建部署低代码引擎工程
如何在 Jenkins 构建后操作中处理预期失败
在自动化测试的过程中,持续集成是一个至关重要的环节,可以帮助团队更高效地进行代码集成和测试。Jenkins作为一个流行的持续集成工具,提供了丰富的功能来支持构建、测试和部署。本文将讨论如何在 Jenkins 中处理测试中的预期失败情况,并将其与构建状态相结合,以便更好地监控和管理项目的健康状况。
测试开发囤货
2023/09/10
8060
如何在 Jenkins 构建后操作中处理预期失败
URL 如何编码
URL编码通常也被称为百分号编码(percent-encoding),是因为它的编码方式非常简单: 使用%加上两位的字符——0123456789ABCDEF——代表一个字节的十六进制形式。URL编码要做的,就是将每一个非安全的ASCII字符都被替换为“%xx”格式, 对于非ASCII字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,然后对每个字节执行百分号编码。 如"中文"使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96 0x87,经过Url编码之后得到"%E4%B8%AD%E6%96%87"。
用户8983410
2021/10/08
1.8K0
点击加载更多

相似问题

角2+如何在角度构建后动态获取图像

11

角2+:在角-cli构建/部署应用程序中不工作的Primeng样式

20

角2+应用程序ng构建

53

在url角2+上隐藏路径

10

构建移动应用程序-角2+ Cordova

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文