以依赖包的方式使用本库
本包本质上是对域名的整理,并将自己常用域名整理成一个类似于常量的包,对外使用。主要用于部署工具读取要部署的目标域名。
安装依赖
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
* 每一个域名配置信息
*/
export interface Domain {
/**
* 顶级域名
* @description 每一个域名都必须配置一个明确的顶级域名 否则无法确定域名归属
*/
topLevelDomain: TopLevelDomain;
/**
* 二级域名
* @description 二级域名必须配置
*/
secondLevelDomain: string;
}
/** 项目信息 */
export interface Project {
/**
* 项目的代号名称
* @description 只能填写英文、数字、横杠线。不能包含空格
*/
name: string;
/**
* 项目的描述
* @description
* 填写简单的描述即可 可以不写
*/
description?: string;
}
/**
* 项目列表
* @description
* 项目列表 新建一个项目时 就在这里添加一个项目
*/
export const projects = [
{ name: "09oa", description: "大项目 09OA项目" },
{ name: "10wms", description: "大项目 10WMS项目" },
{ name: "10wms-doc", description: "大项目 10WMS项目 前端文档" },
{ name: "11comm", description: "大项目 11智慧社区项目" },
{ name: "11comm-doc", description: "大项目 11智慧社区项目 前端文档" },
{ name: "01s-doc", description: "大项目 01星球文档" },
{ name: "utils", description: "工具包项目" },
{ name: "vitepress-preset", description: "vitepress配置预设" },
{ name: "domain", description: "域名列表" },
{ name: "vercel-deploy-tool", description: "vercel部署工具" },
{ name: "ruan-cat-notes", description: "阮喵喵笔记" },
{ 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"];
/**
* 项目化的域名配置 项目展示风格的 域名配置类型
* @description
* 基础的配置 提供基础说明
*/
export interface ProjectLikeDomain extends Domain {
/**
* 项目名称
* @description
* 每一个配置的域名 都必须要说明清楚所归属的项目
*/
projectName: ProjectName;
/**
* 域名之间的排序
* @description
* 项目化的域名,之间需要配置排序值来严格区分优先级
* 排序值越小 优先级越高
*/
order: number;
/**
* 域名说明
* @description
* 填写简单的描述即可 可以不写。不是所有的域名都必须要写清楚自己的特殊用途。
*/
description?: string;
/**
* 项目别名
* @description
* 某些域名很特殊 需要被特殊索引 故需要配置一个别名 来方便索引
*/
projectAlias?: string;
}
/** 项目化的域名 不包含项目名称 */
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: "ruancat6312.top", secondLevelDomain: "01s-11", order: 1 },
{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-11comm", order: 2 },
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11",
order: 3,
description: "本域名主要用于 cloudflare worker 部署,与 ruancat6312.top 域名的内容并不完全等价",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-11comm",
order: 4,
description: "本域名主要用于 cloudflare worker 部署,与 ruancat6312.top 域名的内容并不完全等价",
},
],
/** 大项目 11智慧社区项目 前端文档 */
"11comm-doc": [{ topLevelDomain: "ruancat6312.top", secondLevelDomain: "01s-11comm-doc", order: 1 }],
/** 01星球文档 */
"01s-doc": [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "01s-doc",
order: 1,
description: "本域名是主域名,作为主要的域名使用。在cloudflare worker内配置了自动部署。",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "docs-01-star",
order: 2,
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 },
],
/** 域名列表 */
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,
projectAlias: "notesVercel",
description: `笔记项目 Vercel 流水线版本
在 vercel 流水线内部署的域名
这个域名会在 vc 和 dev 分支触发的时候重新部署
- 更新速度:预期是高频触发,高速部署的域名
- cname:该域名有明确的cname配置,对接的是vercel提供的服务器ns
- 无意义配置:本配置在此处仅仅是用来声明,目前暂时没有专门的域名配置`,
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "ruan-cat-notes",
order: 2,
projectAlias: "notesCloudflare",
description: `笔记项目 Cloudflare 流水线版本
在 cloudflare pages 流水线内部署的域名
这个域名会在dev分支且notes目录下有变更时重新部署
- 更新速度:预期是高频触发,中速部署的域名
- cname:该域名有明确的cname配置,对接的是cloudflare pages提供的默认域名
- 无意义配置:本配置在此处仅仅是用来声明,目前暂时没有专门的域名配置`,
},
{
topLevelDomain: "ruancat6312.top",
secondLevelDomain: "ruan-cat-notes",
order: 3,
projectAlias: "notesGithubWorkflow",
description: `笔记项目 GitHub Workflow 流水线版本
在 github workflow 流水线内部署的域名
为了保证vercel静态文件上传时不会出现构建次数超出每个月100次的额度限制
该域名预期仅仅在main主分支被触发的时候完成更新
- 更新速度:预期是低频触发,低速部署的域名
- cname:该域名没有在平台内配置指定的cname,整个ruancat6312.top域名被vercel管控。vercel会实现自动域名
- 有意义配置:该配置预期会给vercel部署工具直接使用`,
},
],
/** 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: "ruancat6312.top",
secondLevelDomain: "rmmv-api-doc",
order: 1,
description: "目前没有配置工作流给该域名,未来看情况使用",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "rmmv-api-doc",
order: 2,
description: "该域名在vercel内配置cname 在此处仅声明 不实际暴露出去使用",
},
],
/** 杂项项目 */
sundry: [
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "juejin",
order: 1,
description: "重定向到掘金文章主页。在cloudflare内用cloudflare worker函数实现301重定向配置。",
},
{
topLevelDomain: "ruan-cat.com",
secondLevelDomain: "rmmv-api-doc",
order: 2,
description: "rmmv的api文档,用工具生成的文档。由于仓库庞大,故选择用vercel工作流克隆并部署文档。",
},
],
};