Skip to content

以依赖包的方式使用本库

本包本质上是对域名的整理,并将自己常用域名整理成一个类似于常量的包,对外使用。主要用于部署工具读取要部署的目标域名。

安装依赖

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工作流克隆并部署文档。",
		},
	],
};

贡献者

The avatar of contributor named as ruan-cat ruan-cat

页面历史

最近更新