{"id":21418976,"url":"https://github.com/hal-wang/short-url","last_synced_at":"2026-01-02T08:55:22.381Z","repository":{"id":45373794,"uuid":"358517299","full_name":"hal-wang/short-url","owner":"hal-wang","description":"能够使用自己的域名，简化 url。无需服务器，一键搭建","archived":false,"fork":false,"pushed_at":"2023-07-30T07:44:01.000Z","size":537,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T06:13:22.726Z","etag":null,"topics":["cloudbase","halsp","serverless"],"latest_commit_sha":null,"homepage":"https://s.hal.wang","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hal-wang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2021-04-16T07:42:55.000Z","updated_at":"2023-04-20T15:34:58.000Z","dependencies_parsed_at":"2024-11-23T01:00:43.611Z","dependency_job_id":null,"html_url":"https://github.com/hal-wang/short-url","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hal-wang%2Fshort-url","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hal-wang%2Fshort-url/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hal-wang%2Fshort-url/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hal-wang%2Fshort-url/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hal-wang","download_url":"https://codeload.github.com/hal-wang/short-url/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243918884,"owners_count":20368788,"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","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":["cloudbase","halsp","serverless"],"created_at":"2024-11-22T19:31:29.877Z","updated_at":"2026-01-02T08:55:22.351Z","avatar_url":"https://github.com/hal-wang.png","language":"TypeScript","readme":"# short-url\n\n能够使用自己的域名，简化 url\n\n示例网站：\u003chttps://s.hal.wang\u003e\n\n例如\n\n1. 知乎任意一个详情页\n   - 短地址： \u003chttps://s.hal.wang/zhihu\u003e\n   - 原地址： `https://zhuanlan.zhihu.com/p/91947139`\n2. 一键部署地址\n   - 短地址： \u003chttps://s.hal.wang/sud\u003e\n   - 原地址： `https://console.cloud.tencent.com/tcb/env/index?action=CreateAndDeployCloudBaseProject\u0026appUrl=https%3A%2F%2Fgithub.com%2Fhal-wang%2Fshort-url\u0026branch=main`\n\n## 改用自己的域名，你需要做：\n\n1. 一键部署 [![](https://main.qcloudimg.com/raw/67f5a389f1ac6f3b4d04c7256438e44f.svg)](https://console.cloud.tencent.com/tcb/env/index?action=CreateAndDeployCloudBaseProject\u0026appUrl=https%3A%2F%2Fgithub.com%2Fhal-wang%2Fshort-url\u0026branch=main)\n\n2. 配置 HTTP 访问服务\n\n- 添加自定义域名，如 `s.hal.wang`\n\n## 解决 CloudBase Framework Node.JS 版本过低问题\n\n截至目前， `CloudBase Framework` 最高仅支持 `Node.JS 12.16`，很多依赖已经无法正常使用了\n\n这将导致部署的云函数启动失败\n\n为了解决这个问题，你需要或先创建同名云函数再部署，创建云函数时选择 nodejs 版本为 `16.13` （目前最高的支持）\n\n或一键部署后删除 `todo` 云函数，然后再重建一个同名函数，然后再次部署。\n\n## 注意事项\n\n1. API 生成短链接中的域名，是根据调用 API 时头部的 `short-url-origin`。因此调用 API 需要注意头部参数。\n2. 跳转使用 302，因为可能存在限制访问次数的短链接。如果使用 301 则无法正确统计。\n3. 随机部分，默认是 4 位，如果 4 位的冲突较多，则生成 5 位。以此类推，长度不限。\n\n## 二次开发\n\n如果现有功能不能满足，你可以进行二次开发\n\n### API\n\n在 `short-url-api` 下创建文件 `.env.local`，内容如下\n\n```\nSCF_NAMESPACE=cloudbase环境id\nSECRET_KEY=腾讯云 secret key\nSECRET_ID=腾讯云 secret id\n```\n\n#### 运行 API\n\n先安装依赖，在 `short-url-api` 下执行\n\n```bash\nyarn install\n```\n\n再使用 vscode 打开 `short-url-api`，直接 F5 开始调试\n\n或在 `short-url-api` 目录下执行\n\n```bash\nyarn start\n```\n\n### Web\n\n先安装依赖，在 `short-url-web` 下执行\n\n```bash\nyarn install\n```\n\n再执行下面命令运行\n\n```bash\nyarn start\n```\n\n或使用已发布的接口，需要修改 `short-url-web/.env.development` 文件中的 `VITE_GLOB_PROXY_API_URL`\n\n然后运行\n\n```bash\nyarn start:stage\n```\n\n### 发布\n\n可以本地使用 `@cloudbase/cli` 发布，也可以使用 GitHub Actions 持续集成\n\n#### cli 发布\n\n在项目根目录下创建 `.env.local` （注意是项目根目录，不是 API 或 Web 下）\n\n内容如下\n\n```\nENV_ID=cloudbase环境id\n```\n\n在项目根目录下运行以下命令发布\n\n```bash\nnpm run deploy\n```\n\n#### GitHub Actions\n\n仓库增加 Secrets，在 `Settings -\u003e Secrets -\u003e Actions`，点击 `New repository secret` 按钮\n\n- TENCENT_SECRET_ID: 腾讯云 secret id\n- TENCENT_SECRET_KEY: 腾讯云 secret key\n- ENV: 与 `cli 发布` 的 `.env.local` 文件内容相同\n\n配置完成后，每次 main 分支提交代码就会自动发布到 CloudBase\n\n发布进度可在仓库 `Actions` 中看到\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhal-wang%2Fshort-url","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhal-wang%2Fshort-url","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhal-wang%2Fshort-url/lists"}