{"id":29637366,"url":"https://github.com/wolfsilver/gkd-sub","last_synced_at":"2025-07-21T18:37:27.013Z","repository":{"id":303723661,"uuid":"1016402741","full_name":"wolfsilver/gkd-sub","owner":"wolfsilver","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-09T04:52:47.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-09T05:23:44.335Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wolfsilver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-09T01:03:59.000Z","updated_at":"2025-07-09T04:52:50.000Z","dependencies_parsed_at":"2025-07-09T05:23:58.412Z","dependency_job_id":null,"html_url":"https://github.com/wolfsilver/gkd-sub","commit_stats":null,"previous_names":["wolfsilver/gkd-sub"],"tags_count":1,"template":false,"template_full_name":"gkd-kit/subscription-template","purl":"pkg:github/wolfsilver/gkd-sub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfsilver%2Fgkd-sub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfsilver%2Fgkd-sub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfsilver%2Fgkd-sub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfsilver%2Fgkd-sub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wolfsilver","download_url":"https://codeload.github.com/wolfsilver/gkd-sub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfsilver%2Fgkd-sub/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266353266,"owners_count":23915929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-21T18:37:26.441Z","updated_at":"2025-07-21T18:37:27.006Z","avatar_url":"https://github.com/wolfsilver.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# subscription-template\n\nGKD 订阅模板, 此仓库方便您直接构建自己订阅, 点击右上角 [Use this template](https://github.com/new?template_name=subscription-template\u0026template_owner=gkd-kit) 即可使用\n\n## 配置环境\n\n请安装最新版 nodejs 和 pnpm 运行, 以及使用 vscode 打开项目\n\n\u003e [!IMPORTANT]\n\u003e 选择器需要使用 nodejs@22 的 WasmGc 来校验 Java/Kotlin 正则表达式, 确保使用 nodejs\u003e=22\n\n- nodejs\u003e=**22** \u003chttps://nodejs.org/en/download\u003e\n- pnpm\u003e=9 \u003chttps://pnpm.io/zh/installation\u003e\n- vscode \u003chttps://code.visualstudio.com\u003e\n\n安装好后使用模板, 假设您刚刚使用 `Use this template` 创建的仓库是 `https://github.com/username/subscription`\n\n接下来下载并初始化环境\n\n```shell\ngit clone https://github.com/username/subscription\ncd subscription\npnpm install\n```\n\n如果因为网络问题安装失败, 将上面的 `pnpm install` 换成下面命令使用 阿里镜像源 重新安装即可\n\n```sh\npnpm install --registry=https://registry.npmmirror.com\n```\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/64f9da9d-8c6b-4a57-8fe8-ef13ef91346a)\n\n至此环境已在 `subscription` 目录下初始化完毕, 使用 vscode 打开目录即可开始开发\n\n接下来下面所有的示例链接都基于 `username/subscription`, 请自行替换后打开\n\n`pnpm install` 用于安装依赖, 如果您的 [./package.json](./package.json) 发生变化, 则需要再次运行 `pnpm install`\n\n---\n\n如果您无法初始化 nodejs 环境, 那可以直接使用 github 网页编辑文件后在线提交, 点击下面链接即可在线编辑\n\n\u003chttps://github.com/username/subscription/edit/main/src/subscription.ts\u003e\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/6a724cd9-b2cd-429d-bf2e-87f2c8b3d566)\n\n## 目录结构\n\n- 订阅详情 [./src/subscription.ts](./src/subscription.ts)\n- 全局规则 [./src/globalGroups.ts](./src/globalGroups.ts)\n- 规则分类 [./src/categories.ts](./src/categories.ts)\n- 应用规则 [./src/apps](./src/apps/)\n\n在 vscode 内使用鼠标悬浮在任意字段上即可查看注释说明, 也可在 \u003chttps://gkd.li/api\u003e 搜索查看\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/35400b43-0d79-4a67-bd4c-6915613488db)\n\n现在您可编辑 [./src](./src/) 下的文件来自定义您的订阅, 构建后的订阅文件处于 [./dist](./dist/) 目录下\n\n另外您必须修改 订阅详情 [./src/subscription.ts](./src/subscription.ts) 下的 id 字段, 否则可能会和其它订阅冲突, 填一个较大的随机数字即可\n\n## 格式修复\n\n我们使用 [prettier](https://github.com/prettier/prettier) 来格式化代码 和 [eslint](https://github.com/eslint/eslint) 来检测并修复代码错误\n\n同时使用 [simple-git-hooks](https://github.com/toplenboren/simple-git-hooks) 在您提交代码时运行格式化和代码检测修复脚本\n\n当您的代码存在错误时, 它会阻止您提交代码并输出具体错误以供您手动修复后再次提交\n\n当提交代码到仓库时, 我们也需要使用 github actions 来帮助自动格式化并修复代码, 因此您需要开启仓库的此项权限\n\n打开 \u003chttps://github.com/username/subscription/settings/actions\u003e\n\n然后找到 Workflow permissions 点击 Read and write permissions 然后点击下方的 Save 即可\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/e3bbefe3-7745-42c7-adc8-3cfe2757c9cf)\n\n## 构建订阅\n\n我们需要将 [./src](./src/) 分散的文件合并为一个 gkd.json5 的最终订阅文件并输出到 [./dist](./dist/) 目录下\n\n推荐使用 github actions 进行构建, 在 [./.github/workflows](./.github/workflows) 下有 3 个工作流\n\n我们使用其中的 `build_release.yml` 构建并发布\n\n打开 \u003chttps://github.com/username/subscription/actions/workflows/build_release.yml\u003e\n\n然后点击右侧的 `Run workflow` 即可运行并发布\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/bbaf5113-8ab3-4be0-9a79-ee7a7389a58c)\n\n构建后订阅将输出到 dist 目录下, gkd.json 的文件订阅地址如下, 复制后到 GKD 添加即可\n\n```txt\nhttps://raw.githubusercontent.com/username/subscription/main/dist/gkd.json5\n```\n\n## 镜像加速\n\nraw.githubusercontent.com 在大陆的访问常常无法访问\n\n您可以换成 \u003chttps://fastly.jsdelivr.net/gh/username/subscription@main/dist/gkd.json5\u003e 加速访问\n\n如果无法访问 raw.githubusercontent.com 和 fastly.jsdelivr.net\n\n您可以将本仓库发布到 npm 上, 然后通过 registry.npmmirror.com 加速访问\n\n要发布到 npm 上, 必须先将 [./package.json](./package.json) 的 name 字段改成未使用的包名, 否则发布失败\n\n您可以改成 `gkd-subscription-xxxx` 其中 `xxxx` 是订阅的 id 或者随机字母数字, 总之不冲突就行\n\n或者改成 `@your_npm_name/subscription`, 这种类型是 scope 名称, 其中 `your_npm_name` 是你下面要注册的 npm 用户名\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/79817967-6f97-4935-9bf3-179bbf50b3aa)\n\n接下来获取 token, 你需要先注册 \u003chttps://www.npmjs.com\u003e, 然后到 Access Tokens 界面点击 Generate New Token 选择 Classic Token 后随便输入 Name 选择 Publish 即可生成并复制\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/ca5eaf26-3705-4dc7-9584-4a235bbefde2)\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/6da188ab-e415-44de-b2f7-3f985ab4d401)\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/55db57f6-1021-4d85-afd0-fe7df1f9bbcf)\n\n复制后打开 \u003chttps://github.com/username/subscription/settings/secrets/actions/new\u003e\n\n在 Name 输入 `NPM_TOKEN`, 在 Secret 输入刚刚复制的 token, 点击 Add secret 即可添加成功\n\n![image](https://github.com/gkd-kit/gkd/assets/38517192/72b062d8-4540-4602-82fe-416ea5348014)\n\n然后只需要重复上面的 构建订阅 步骤即可发布, 发布后得到的镜像加速链接如下\n\n```txt\nhttps://registry.npmmirror.com/gkd-subscription-xxxx/latest/files/dist/gkd.json5\n```\n\n注: 将 gkd-subscription-xxxx 换成您的包名\n\n如果你的包名是 `@your_npm_name/subscription` 这种类型, 加速链接是\n\n```txt\nhttps://registry.npmmirror.com/@your_npm_name/subscription/latest/files/dist/gkd.json5\n```\n\n由于 npmmirror 被恶意刷流量后已经改为白名单模式, 不在白名单内的包, 上面的链接无法正常加速访问\n\n因此要使上面的链接被正常访问, 你需要向 \u003chttps://github.com/cnpm/unpkg-white-list\u003e 提交 pr 将你的包添加到白名单\n\n## 自定义配置文件\n\n注意: **大多数情况下, 你不需要自定义, 使用默认配置时, 下面此节教程无需了解**\n\n你可以在 [./package.json](./package.json) 下添加 gkd 属性配置自定义构建选项\n\n```json\n{\n  \"gkd\": {\n    \"outDir\": \"dist\",\n    \"file\": \"gkd.json5\",\n    \"versionFile\": \"gkd.version.json5\",\n    \"changelog\": \"CHANGELOG.md\",\n    \"README.md\": \"README.md\"\n  }\n}\n```\n\n这个 gkd 属性的类型如下\n\n```ts\n/**\n * @default package.json.gkd\n */\ntype GkdConfig = {\n    /**\n     * @default 'dist'\n     */\n    outDir?: string;\n    /**\n     * @default 'gkd.json5'\n     */\n    file?: string;\n    /**\n     * @default 'gkd.version.json5'\n     */\n    versionFile?: string;\n    /**\n     * @default 'CHANGELOG.md'\n     */\n    changelog?: string;\n    /**\n     * @default 'README.md'\n     */\n    readme?: string;\n};\n```\n\n如果不想写配置文件, 也可以将这个参数直接传递给 `@gkd-kit/tools` 的 `updateDist` 函数\n\n手动传递参数的时候, 你必须显式将路径(非文件名)参数传递给 [./.github/workflows/build_release.yml](./.github/workflows/build_release.yml) 下的 `updatePkgVersion` 和 `stdoutGkdVersion` 函数\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwolfsilver%2Fgkd-sub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwolfsilver%2Fgkd-sub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwolfsilver%2Fgkd-sub/lists"}