Harbor二次开发前端环境搭建

news2025/6/17 18:36:07

1 前端开发环境搭建

(1)拉取分支代码

(2)前端开发推荐使用VsCode编辑器打开项目

打开 harbor\src\portal 文件夹,该文件夹为Harbor对应的前端代码所在位置

(3)在portal文件夹下创建名为 proxy.config.json 的文件,该文件用于代理请求到后端

proxy.config.json具体内容如下,将hostname替换为对应的后端服务地址即可

{
  "/api/*": {
    "target": "https://hostname",
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug"
  },
  "/service/*": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/c/login": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/c/oidc/login": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/sign_in": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/c/log_out": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/sendEmail": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/language": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/reset": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/c/userExists": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/reset_password": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/i18n/lang/*.json": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/swagger.json": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/swagger2.json": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/chartrepo/*": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  },
  "/LICENSE": {
    "target": "https://hostname",
    "secure": false,
    "logLevel": "debug"
  }
}

(4)打开终端,切换到portal文件夹,运行 npm install 命令安装项目依赖的npm包

(5)运行项目

npm相关依赖包安装完成后,使用npm run start命令启动项目

出现下图内容时,表示项目启动成功。

项目启动成功后,浏览器地址栏输入 https://localhost:4200 即可看到Harbor的UI界面

2 修改示例

2.1 关于官方提供的修改说明

官方在 https://goharbor.io/docs/2.6.0/build-customize-contribute/customize-look-feel/ 给出的关于修改UI界面和背景的说明。相关配置均保存在 harbor\src\portal\src\目录下的 setting.json 配置文件,这个配置文件在Harbor启动时加载。

setting.json 配置文件内容如下

{
  "headerBgColor": {
    "darkMode": "",
    "lightMode": ""
  },
  "loginBgImg": "",
  "loginTitle": "",
  "product": {
    "name": "",
    "logo": "",
    "introduction": ""
  }
}

其中,各个字段解释如下

headerBgColor : 页眉的背景颜色,支持 HEX 或 RGB 值。例如:#004a70和rgb(210,110,235)。

darkMode:暗模式页眉的背景颜色。

lightMode:浅色模式页眉的背景颜色。

loginBgImg:登录页面显示的背景图片的名称路径,例如:‘login_bg.png’。图像文件应放在images文件夹中。建议此图片的大小应大于 800px*600px。

loginTitle:登录页面中显示的完整产品标题。

Product:包含产品的元数据/描述。

name:产品的名称。

logo:产品标志的名称路径,例如:logo.png。图像文件应放在images文件夹中。

introduction: 产品介绍,显示在About对话框中。

2.2 登录页面修改

(1)logo + title修改

将logo文件放入 harbor\src\portal\src\images 文件夹下

修改setting.json文件如下

{
  "headerBgColor": {
    "darkMode": "",
    "lightMode": ""
  },
  "loginBgImg": "",
  "loginTitle": "xxxxx", //登录页显示的名称
  "product": {
    "name": "xxxxx",  //首页显示的名称
    "logo": "logo.svg",
    "introduction": ""
  }
}

如果还需调整一下logo的样式

样式文件路径

harbor\src\portal\src\app\shared\components\navigator\navigator.component.scss

修改样式如下,主要是调整元素的宽度

.headerLogo {
    width: xxxpx;
    height: xxpx;
    object-fit: fill;
}

同时,登录页面右下方有更多信息的跳转链接,需要去除该信息

在 harbor\src\portal\src\app\account\sign-in\sign-in.component.html 文件中,屏蔽下面代码即可

2.3 关于页面修改

关于页面主要分为 版本号、介绍、开源/第三方许可协议 这3部分内容

(1)修改或屏蔽版本号

代码路径

harbor\src\portal\src\app\shared\components\about-dialog\about-dialog.component.html

找到下面的代码片段,注释或者修改这段代码即可改动版本号相关内容

<div>
    <span class="p5 about-version">{{'ABOUT.VERSION' | translate}} {{version}}</span>
</div>

屏蔽版本号效果如下

(2)修改Harbor的介绍说明

修改setting.json文件的 product中的 introduction字段

{
  "headerBgColor": {
    "darkMode": "",
    "lightMode": ""
  },
  "loginBgImg": "",
  "loginTitle": "xxxxxx",
  "product": {
    "name": "xxxxxx",
    "logo": "logo.svg",
    "introduction": "Harbor说明测试"
  }
}

修改效果如下

注:修改了introduction字段后,相应的 开源/第三方许可协议 默认不再显示

也可以修改下面文件路径中的内容

harbor\src\portal\src\i18n\lang\zh-cn-lang.json

(3)屏蔽 开源/第三方许可协议

代码路径

harbor\src\portal\src\app\shared\components\about-dialog\about-dialog.component.html

找到下面的代码片段,注释或者修改这段代码即可改动版本号相关内容

<p class="p5">
    <a routerLink="/license" target="_blank">{{'ABOUT.OPEN_SOURCE_LICENSE' | translate}}</a>
</p>

屏蔽开源/第三方许可协议效果如下

2.4 首页中Harbor API V2.0跳转屏蔽

首页中,左下角有 Harbor API V2.0 ,点击会跳转到 api 的说明文档中

api说明文档页面

如果需要屏蔽此功能,需要找到harbor-shell.component.html文件

harbor-shell.component.html文件路径

harbor\src\portal\src\app\base\harbor-shell\harbor-shell.component.html

在文件中找到下面的代码片段,注释该代码片段即可

<a clrVerticalNavLink routerLinkActive="active" target="_blank" routerLink="/devcenter-api-2.0">
    <clr-icon shape="network-globe" clrVerticalNavIcon></clr-icon>
    {{'SIDE_NAV.HARBOR_API_MANAGEMENT' | translate}}
</a>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1503757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

macOS上实现「灵动岛」效果

自从Apple iPhone推出了「灵动岛」功能后&#xff0c;用户们就被其优雅的设计和强大的功能所吸引。然而&#xff0c;作为macOS用户&#xff0c;我们一直在等待这一功能能够在我们的设备上实现。现在&#xff0c;随着新的应用程序的推出&#xff0c;我们终于可以在我们的Mac上体…

物流分拣漫LiDAR反射板

激光雷达漫反射板是物流分拣中不可或缺的一种设备&#xff0c;它在物流分拣过程中发挥着重要的作用。漫反射板的主要功能是反射光线&#xff0c;使得光线能够在分拣区域内均匀分布&#xff0c;从而提高分拣设备的识别精度和效率。 物流分拣是现代物流系统中非常关键的一环&…

信息抽取在旅游行业的应用:以景点信息抽取为例

开源项目推荐 今天先给大家推荐一个开源项目&#xff0c;多模态AI能力引擎平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口&#xff0c;功能强大&#xff0c;欢迎体验。 https://gitee.com/stonedtx/free-nlp-api 场景描述 在旅游行业…

【分库分表】基于mysql+shardingSphere的分库分表技术

目录 1.什么是分库分表 2.分片方法 3.测试数据 4.shardingSphere 4.1.介绍 4.2.sharding jdbc 4.3.sharding proxy 4.4.两者之间的对比 5.留个尾巴 1.什么是分库分表 分库分表是一种场景解决方案&#xff0c;它的出现是为了解决一些场景问题的&#xff0c;哪些场景喃…

【蓝桥杯】蓝桥杯算法复习(一)

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…

使用Git将代码上传至代码托管平台GitCode

使用像GitLbi、GitHub、Gitee等代码托管平台用于版本控制非常滴方便&#xff0c;能够跟踪代码的变化和历史记录&#xff0c;方便管理和回滚&#xff0c;还允许多个开发者同时在一个项目上进行开发和协作&#xff0c;提高团队协作效率。 这些平台的代码托管和上传方式都大同小异…

【QT】自定义控件的示例

自定义控件&#xff08;很重要&#xff09; 什么是自定义控件&#xff1f; 顾名思义就是创建一个窗口&#xff0c;放入多个控件&#xff0c;拼接起来&#xff0c;一起使用。 为什么需要它&#xff1f; 需求&#xff0c;假设有100个窗口&#xff0c;那如果有两个控件同时被使…

开源组件安全风险及应对

在软件开发的过程中&#xff0c;为了提升开发效率、软件质量和稳定性&#xff0c;并降低开发成本&#xff0c;使用开源组件是开发人员的不二选择&#xff08;实际上&#xff0c;所有软件开发技术的演进都是为了能够更短时间、更低成本地构建软件&#xff09;。这里的开源组件指…

【网络原理】使用Java基于UDP实现简单客户端与服务器通信

目录 &#x1f384;API介绍&#x1f338;DatagramSocket&#x1f338;DatagramPacket&#x1f338;InetSocketAddress &#x1f333;回显客户端与服务器&#x1f338;建立回显服务器&#x1f338;回显客户端 ⭕总结 我们用Java实现UDP数据报套接字编程&#xff0c;需要借用以下…

深度学习相关概念及术语总结

目录 1.CNN2.RNN3.LSTM4.NLP5.CV6.正向传播7.反向传播8.sigmoid 函数9.ReLU函数10.假设函数11.损失函数12.代价函数 1.CNN CNN 是卷积神经网络&#xff08;Convolutional Neural Network&#xff09;的缩写。卷积神经网络是一种深度学习模型&#xff0c;专门用于处理具有网格状…

数据可视化基础篇-图形语法

当我们在制作仪表盘或其他数据可视化时离不开对图表的选择&#xff0c;不同的数据信息该怎么选择图表可能是不少人会遇到的问题。 要解决这个问题我们首先需要理解数据可视化的生成规律或者说是“语法”&#xff0c;目前主流的数据可视化理论认为&#xff0c;可视化是由基础标…

存储引擎的简介

简介&#xff1a; 1.在mysql存储引擎可以说就是指表的类型&#xff0c;可以称为表处理器&#xff0c;以表的形式存储。 2.他的功能就是接收上层传下来的指令&#xff0c;然后对表中的数据进行提取写入操作。 目的&#xff1a; 为了管理方便&#xff0c;我们把连接管理&#xf…

生成对抗网络 (GAN)

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;GAN&#xff09;是由Ian Goodfellow等人在2014年提出的一种深度学习模型。GAN由两部分组成&#xff1a;一个生成器&#xff08;Generator&#xff09;和一个判别器&#xff08;Discriminator&#xff09;&…

代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N的节点、07.链表相交、142.环形链表II

代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N的节点、07.链表相交、142.环形链表II 24.两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成…

创建数据表

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 如果要进行数据表的创建 create table 表名称 (列名称 类型 [DEFAULT 默认值 ] ,列名称 类型 [DEFAULT 默认值 ] ,列名称 类型 [DEFAULT 默认值 ] ,...列名称 类型 [DEFAULT 默认值 ] )…

JS直接量及其相关对象

什么是直接量 直接量是指不需要创建对象就可以直接使用的变量。ES中的直接量主要有三种类型&#xff1a;表示字符串的string类型、表示数字的number类型和表示true/false的boolean类型。当我们直接将值赋给变量后&#xff0c;ES就会自动判断其类型&#xff0c;而且当参数发生变…

springboot + jpa + 达梦数据库兼容 Mysql的GenerationType.IDENTITY主键生成策略

导入达梦数据库对hibernate的方言包 <dependency><groupId>com.dameng</groupId><artifactId>DmDialect-for-hibernate5.6</artifactId><version>8.1.2.192</version></dependency>配置文件中添加方言配置和主键生成策略配置…

如何在一个pycharm项目中创建jupyter notebook文件,并切换到conda环境中

1、第一步可以直接在pycharm项目中创建jupyter notebook文件 2、假若想要切换成pytorch环境做实验例子&#xff0c;会发现报这个错误 Jupyter server process exited with code 1 C:\Users\12430\.conda\envs\pytorch3.11\python.exe: No module named jupyter在这里&#xff…

洞悉 Kubernetes 高阶奥秘:掌控资源、网络、存储,玩转容器化应用!

昨天我们已经入门了K8S&#xff0c;今天带大家学习一下资源、网络、存储这几个进阶的知识点模块内容。这几天陆陆续续会把K8S从头到尾讲一遍&#xff0c;最后会带大家实战一下&#xff0c;下面就开始今天的学习吧。 高级资源和控制器 Kubernetes 提供了一系列高级资源和控制器…

Toyota Programming Contest 2024#3(AtCoder Beginner Contest 344)(A~C)

A - Spoiler 竖线里面的不要输出&#xff0c;竖线只有一对&#xff0c;且出现一次。 #include <bits/stdc.h> //#define int long long #define per(i,j,k) for(int (i)(j);(i)<(k);(i)) #define rep(i,j,k) for(int (i)(j);(i)>(k);--(i)) #define debug(a) cou…