以依赖包的方式使用本库
本包本质上是对域名的整理,并将自己常用域名整理成一个类似于常量的包,对外使用。主要用于部署工具读取要部署的目标域名。
安装依赖
bash
pnpm i -D @ruan-cat/domains阅读源码
因为本包仅仅是一个封装常量的包,所以请直接阅读源码,导入模块即可。
推荐用法
使用 getDomains 函数
ts
import { getDomains } from "@ruan-cat/domains";
const domains = getDomains("ruan-cat-notes");
console.log(domains);类型
详情
ts
/**
* 顶级域名
* @description
* 阮喵喵的顶级域名
*
* 目前阮喵喵仅仅是购买了两个顶级域名 未来不太可能继续购买额外的顶级域名了
*/
export type TopLevelDomain = "ruancat6312.top" | "ruan-cat.com";
/**
* 部署平台
* @description
* 该域名所部署的平台。目前仅支持 cloudflare 和 vercel。
*/
export type DeployPlatform = "cloudflare" | "vercel";
/**
* 域名配置信息
* @description
* 每一个域名配置信息
*/
export interface Domain {
/**
* 顶级域名
* @description 每一个域名都必须配置一个明确的顶级域名 否则无法确定域名归属
*/
topLevelDomain: TopLevelDomain;
/**
* 二级域名
* @description 二级域名必须配置
*/
secondLevelDomain: string;
}
/** 项目信息 */
export interface Project {
/**
* 项目的代号名称
* @description 只能填写英文、数字、横杠线。不能包含空格
*/
name: string;
/**
* 项目的描述
* @description
* 填写简单的描述即可 可以不写
*/
description?: string;
/**
* 项目展示顺序
* @description
* 数值越小排序越靠前;不填写时会在文档导航中排到最后
*/
order?: number;
}
/**
* 项目列表
* @description
* 项目列表 新建一个项目时 就在这里添加一个项目
*/
export const projects = [
{ name: "utils", description: "工具包项目", order: 1 },
{ name: "ruan-cat-notes", description: "阮喵喵笔记,个人笔记项目", order: 2 },
{ name: "gh", description: "github贡献表,个人pr贡献在线查询项目", order: 3 },
{ name: "vue-element-cui", description: "组件库项目,对业务向常用组件做二次封装的项目", order: 4 },
{ name: "gzpc", description: "广州普查,广州智能决策智慧城市驾驶舱,高德地图大屏项目", order: 5 },
{ name: "domain", description: "域名列表,个人全部可对外展示的域名列表站点", order: 6 },
{ name: "vitepress-preset", description: "vitepress配置预设", order: 7 },
{ name: "claude-notifier", description: "claude code通知工具", order: 8 },
{ name: "vercel-deploy-tool", description: "vercel部署工具", order: 9 },
{ name: "09oa", description: "dfsw 09OA技术验证项目" },
{ name: "10wms", description: "hgxy 10WMS招标客户演示demo项目" },
{ name: "10wms-doc", description: "hgxy 10WMS招标demo项目 客户要求开发团队内部文档-前端团队" },
{ name: "11comm", description: "hgxy 11智慧社区项目(客户违约)" },
{ name: "11comm-doc", description: "hgxy 11智慧社区项目(客户违约) 前端文档" },
{ name: "01s-doc", description: "dfsw-01s实习生团队 01s文档" },
{ name: "rmmv-notes", description: "rmmv笔记项目" },
{ name: "drill-doc", description: "钻头文档" },
{ name: "rmmv-api-doc", description: "rmmv api文档" },
{ name: "sundry", description: "杂项项目" },
] as const;
/** 项目名称列表 */
export type ProjectName = (typeof projects)[number]["name"];
/** 项目条目 */
export type ProjectItem = Project & {
name: ProjectName;
};
/**
* 项目化的域名配置 项目展示风格的 域名配置类型
* @description
* 基础的配置 提供基础说明
*/
export interface ProjectLikeDomain extends Domain {
/**
* 项目名称
* @description
* 每一个配置的域名 都必须要说明清楚所归属的项目
*/
projectName: ProjectName;
/**
* 域名之间的排序
* @description
* 项目化的域名,之间需要配置排序值来严格区分优先级
* 排序值越小 优先级越高
*/
order: number;
/**
* 域名说明
* @description
* 填写简单的描述即可 可以不写。不是所有的域名都必须要写清楚自己的特殊用途。
*/
description?: string;
/**
* 项目别名
* @description
* 某些域名很特殊 需要被特殊索引 故需要配置一个别名 来方便索引
*/
projectAlias?: string;
/**
* 部署平台
* @description
* 指明该域名部署在哪个平台上,目前可选的平台有 cloudflare 和 vercel。
*/
deployPlatform?: DeployPlatform;
}
/** 项目化的域名 不包含项目名称 */
export type ProjectLikeDomainWithoutProjectName = Omit<ProjectLikeDomain, "projectName">;
/**
* 项目化的域名集合
* @description
* 设计成用项目名称作为key 便于查询阅读
*/
export type ProjectLikeDomainSet = Record<ProjectName, ProjectLikeDomainWithoutProjectName[]>;域名集
详情
ts
import { type ProjectLikeDomainSet } from "./types.ts";
/**
* 项目化的域名集合
* @description
* 设计成用项目名称作为key 便于查询阅读
*/
export const projectLikeDomainSet: ProjectLikeDomainSet = {
/** 大项目 09OA项目 */
"09oa": [{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-09oa", order: 1 }],
/** 大项目 10WMS项目 */
"10wms": [{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "10wms", order: 1 }],
/** 大项目 10WMS项目 前端文档 */
"10wms-doc": [
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-10wms-doc", order: 1 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-10wms-frontend-docs", order: 2 },
],
/** 大项目 11智慧社区项目 */
"11comm": [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11comm",
order: 1,
deployPlatform: "vercel",
projectAlias: "11commAdmin",
description: `admin管理后台的入口。与 ruancat6312.top 域名的内容并不完全等价。
vercel 项目名称:11comm-admin`,
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11",
order: 2,
deployPlatform: "cloudflare",
description: `admin管理后台的入口,但是已经废弃,因为部署nitro接口遇到环境变量获取问题,故未来不考虑继续维护cloudflare worker的部署了。
与 ruancat6312.top 域名的内容并不完全等价`,
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11-server",
order: 3,
deployPlatform: "vercel",
projectAlias: "11commNitroServer",
description: `整个11comm项目admin和app两个前端应用的,公共nitro接口后端服务。
vercel 项目名称:11comm-nitro-server`,
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11-app",
order: 4,
deployPlatform: "vercel",
projectAlias: "11commAppH5",
description: `11comm App H5 前端生产环境。
vercel 项目名称:11comm-app-h5`,
},
// 这个配置已经过时了 认定为需要被废弃掉
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11-app-server",
order: 5,
deployPlatform: "vercel",
projectAlias: "11commAppNitroServer",
description: `11comm App Nitro 服务端接口生产环境。在 vercel 平台内完成部署,高频更新。vercel 项目名称:11comm-app-nitro-server。
该域名未来需要废弃掉,因为不考虑为app做一个独立的接口服务了。`,
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s.11.app",
order: 6,
description: `微信小程序备案用的【H5前端app页面】,说是不给增加短横杠。经过实际实验不行,因为 ruan-cat.com 这个一级域名本身就提供了短横杠。这是不可理喻的。
傻逼腾讯。
尝试使用 web-view 来实现小程序套壳H5,但是我的账号是个人账号,没有权限使用 web-view 功能。故备案域名设计无效。`,
},
{
topLevelDomain: "ruancat6312.top",
secondLevelDomain: "01s.11.app",
order: 7,
description: `微信小程序备案用的【H5前端app页面】,说是不给增加短横杠。
尝试使用 web-view 来实现小程序套壳H5,但是我的账号是个人账号,没有权限使用 web-view 功能。故备案域名设计无效。`,
},
{
topLevelDomain: "ruancat6312.top",
secondLevelDomain: "01s.11.app.server",
order: 8,
description: `微信小程序备案用的【nitro服务端接口】,说是不给增加短横杠。
尝试使用 web-view 来实现小程序套壳H5,但是我的账号是个人账号,没有权限使用 web-view 功能。故备案域名设计无效。`,
},
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-11", order: 9 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-11comm", order: 10 },
],
/** 大项目 11智慧社区项目 前端文档 */
"11comm-doc": [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11comm-doc",
order: 1,
deployPlatform: "cloudflare",
description: "本域名主要用于 cloudflare worker 部署,与 ruancat6312.top 域名的内容并不完全等价。是高频更新的。",
},
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-11comm-doc", order: 2 },
],
/** 01星球文档 */
"01s-doc": [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-doc",
order: 1,
deployPlatform: "cloudflare",
description: "本域名是主域名,作为主要的域名使用。在cloudflare worker内配置了自动部署。",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "docs-01-star",
order: 2,
deployPlatform: "cloudflare",
description: "本域名是别名。在cloudflare worker内指向同一个内容。不属于301重定向写法。",
},
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "docs-01-star", order: 3 },
{
topLevelDomain: "ruancat6312.top",
secondLevelDomain: "01s-doc",
order: 4,
description: "本域名是别名。旨在于统一域名的编写格式。",
},
],
/** 工具包项目 */
utils: [
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "utils", order: 1 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "utils", order: 2 },
],
/** vitepress配置预设 */
"vitepress-preset": [
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "vip", order: 1 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "vitepress", order: 2 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "vitepress-preset", order: 3 },
],
/** claude code 通知工具 */
"claude-notifier": [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "ccntf",
order: 1,
deployPlatform: "vercel",
description: "本域名在cloudflare CDN 内配置了二级域名。由 github workflow + vercel 流水线完成部署。低频更新。",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "claude-notifier",
order: 2,
deployPlatform: "vercel",
description: "和 ccntf 域名指向同一个内容,使用相同的配置。",
},
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "ccntf", order: 3 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "claude-notifier", order: 4 },
],
/** 域名列表 */
domain: [
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "dm", order: 1 },
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "dm", order: 2 },
],
/** vercel部署工具 */
"vercel-deploy-tool": [
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "vercel-deploy-tool", order: 1 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "vercel", order: 2 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "vc", order: 3 },
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "vc", order: 4 },
],
/** 阮喵喵笔记 */
"ruan-cat-notes": [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "notes",
order: 1,
deployPlatform: "vercel",
projectAlias: "notesVercel",
description: `笔记项目 Vercel 流水线版本
在 vercel 流水线内部署的域名
这个域名会在 dev 分支触发的时候重新部署
- 更新速度:预期是高频触发,中速部署的域名
- cname:该域名有明确的cname配置,对接的是vercel提供的cname域名
- git日志:该站点会提供git修改日志,因为 vercel 流水线会提供git信息
- 无意义配置:本配置在此处仅仅是用来声明,目前暂时没有专门的域名配置`,
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "ruan-cat-notes",
order: 2,
deployPlatform: "cloudflare",
projectAlias: "notesCloudflare",
description: `笔记项目 Cloudflare 流水线版本
在 cloudflare pages 流水线内部署的域名
这个域名会在dev分支且notes目录下有变更时重新部署
- 更新速度:预期是高频触发,高速部署的域名
- cname:该域名有明确的cname配置,对接的是cloudflare pages提供的默认域名
- git日志:该站点没有git修改日志,因为 cloudflare worker 流水线不会提供git信息
- 无意义配置:本配置在此处仅仅是用来声明,目前暂时没有专门的域名配置`,
},
{
topLevelDomain: "ruancat6312.top",
secondLevelDomain: "ruan-cat-notes",
order: 3,
deployPlatform: "vercel",
projectAlias: "notesGithubWorkflow",
description: `笔记项目 GitHub Workflow 流水线版本
在 github workflow 流水线内部署的域名
为了保证vercel静态文件上传时不会出现构建次数超出每个月100次的额度限制
该域名预期仅仅在main主分支被触发的时候完成更新
- 更新速度:预期是低频触发,低速部署的域名
- cname:该域名没有在平台内配置指定的cname,整个ruancat6312.top域名被vercel管控。vercel会实现自动域名
- git日志:该站点会提供git修改日志,因为 github action 流水线会提供git信息
- 有意义配置:该配置预期会给vercel部署工具直接使用`,
},
],
/** github贡献表 */
gh: [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "gh",
order: 1,
deployPlatform: "vercel",
description: `阮喵喵的github贡献表。目前只包括pr贡献,issue贡献暂时没有。
使用vercel部署,域名在cloudflare内以CDN方式配置。
本站点几乎是一次性完成的,未来几乎不会进一步更新。故配置了基于main主分支的低频更新。`,
},
],
/** vue-element-cui 组件库项目 */
"vue-element-cui": [
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "vec", order: 1, description: "组件库项目的文档。" },
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "vue-element-cui",
order: 2,
description: "组件库项目的文档。",
},
],
/** 广州普查 */
gzpc: [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "gzpc",
order: 1,
description: "广州普查,广州智能决策智慧城市驾驶舱,高德地图大屏项目",
},
],
/** rmmv笔记项目 */
"rmmv-notes": [
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "rpgmv-dev-notes", order: 1 },
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "rpgmv-dev-notes", order: 2 },
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "mv", order: 3 },
],
/** 钻头文档 */
"drill-doc": [
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "small-alice-web", order: 1 },
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "small-alice-web", order: 2 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "drill", order: 3 },
{ topLevelDomain: "ruan-cat.com", secondLevelDomain: "drill", order: 4 },
],
/** rmmv api文档 */
"rmmv-api-doc": [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "rmmv-api-doc",
order: 1,
deployPlatform: "vercel",
description: "使用vercel流水线部署的域名。",
},
{
topLevelDomain: "ruancat6312.top",
secondLevelDomain: "rmmv-api-doc",
order: 2,
description: "目前没有配置工作流给该域名,未来看情况使用",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "rmmv-api-doc",
order: 3,
deployPlatform: "vercel",
description: "该域名在vercel内配置cname 在此处仅声明 不实际暴露出去使用",
},
],
/** 杂项项目 */
sundry: [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "juejin",
order: 1,
deployPlatform: "cloudflare",
description: "重定向到掘金文章主页。在cloudflare内用cloudflare worker函数实现301重定向配置。",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "star",
order: 2,
deployPlatform: "cloudflare",
description: `重定向到个人的github stars列表页。在cloudflare内用cloudflare worker函数实现301重定向配置。
重定向到 https://ruan-cat.github.io/stars-list/ 这个页面。`,
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "rmmv-api-doc",
order: 2,
deployPlatform: "vercel",
description: "rmmv的api文档,用工具生成的文档。由于仓库庞大,故选择用vercel工作流克隆并部署文档。",
},
],
};