
dub CLI 如何完成本地构建、npm link 与 dub login 首次登录【免费下载链接】dubThe modern link attribution platform. Loved by world-class marketing teams like Framer, Perplexity, Superhuman, Twilio, Buffer and more.项目地址: https://gitcode.com/GitHub_Trending/du/dub如果你需要脱离 dub.co 网页控制台、在终端里直接调用 Dub API 创建短链就要用到dub-cli——dub 仓库packages/cli目录下提供的命令行工具。它通过 OAuth 登录 Dub 平台把访问凭据保存在本地之后就能用dub命令执行login、config、domains、shorten、links等子命令。本文覆盖的任务是在本地把dub-cli构建出来通过npm link注册为全局dub命令完成dub login首次登录并验证登录是否真正生效。依据是仓库中的 packages/cli/README.md 及其指向的源码。准备条件项目使用 pnpm 工作区管理根目录有 pnpm-workspace.yaml先在仓库根目录安装依赖再进入 CLI 包目录。packages/cli/package.json 中定义了构建与运行脚本这也是后文所有pnpm命令的来源脚本实际命令用途devtsup --watch监听模式构建开发时使用buildtsup一次性构建产物startnode dist/index.js直接以 Node 运行构建产物构建产物输出到packages/cli/dist/index.js即 tsup.config.ts 中的outDir: dist入口为src/index.ts。package.json的bin字段把dub命令映射到./dist/index.js所以npm link之后全局可用的就是dub。构建并 link让dub命令全局可用packages/cli/README.md 的 “Testing Production-like Setup” 章节给出了主路径。开始前先注意文档中的警告如果之前已全局安装过dub-cli先卸载它避免冲突。克隆仓库、安装依赖后进入 CLI 目录cd packages/cli构建包pnpm build将包 link 到全局npm link验证安装确认dub命令可执行并输出版本号-v, --version选项在 src/index.ts 中注册dub -v之后即可在任意目录运行子命令dub [command]可选分支如果只是想边改代码边调试不需要npm link。README 的 “Running Locally for Development” 章节的做法是在一个终端运行pnpm dev即tsup --watch持续重新构建在另一个终端运行pnpm start [command]执行命令用pnpm start help查看全部可用命令。这条路径只服务于开发调试不产生全局dub命令。dub loginOAuth 浏览器登录流程dub login的作用是登录 Dub 平台。看 packages/cli/src/commands/login.ts 的实现它执行时会做三件事生成一个codeVerifier并固定回调地址为http://localhost:4587/callback通过 OAuth 授权码流程oauthClient.authorizationCode.getAuthorizeUri申请links.read、links.write、domains.read三个 scope拿到授权 URL然后调用open包自动打开浏览器启动本地回调服务等待授权结果。回调服务在 packages/cli/src/api/callback.ts 中它监听4587端口收到/callback?code...后换取accessToken、refreshToken、expiresAt写入本地配置最后终端会打印绿色的Logged in successfully!浏览器页面显示Authentication successful! You can close this window.。所以执行首次登录的操作就是dub login然后跟随浏览器中弹出的授权页完成登录授权即可。两个值得知道的边界均来自源码如果回调请求缺少code参数服务会返回 400 并提示Authorization code not found. Please start the login process again.需要重新运行dub login回调服务设置了 300 秒setTimeout(..., 300000)的超时超时后进程直接退出此时同样需要重新开始登录。验证登录是否生效登录成功与否不能只看终端提示可以从两处核对本地配置文件。setConfig使用Configstore(dub-cli)持久化凭据见 packages/cli/src/utils/config.ts写入的字段包括access_token、refresh_token、expires_atlogin流程还会带上domain: dub.sh。运行下面命令可以查看当前配置的 workspace 凭据config子命令会打印这份配置的 JSONdub configdub config成功时终端显示Configuration file successfully retrieved并输出带颜色的 JSON 凭据。未登录时的报错行为。所有依赖凭据的命令都会先调用getConfig()如果本地还没有任何配置会抛出Access token not found. Please run dub login to authenticate with Dub.也就是说如果你跳过登录直接运行dub shorten等命令看到这条报错就按提示先dub login。另外getConfig内置了过期处理当expires_at已过时它会用refresh_token自动刷新并写回新凭据不需要手动重新登录。登录后的首个操作创建一个短链首次登录的最终目的是能用 CLI 干活。以创建短链为例packages/cli/src/commands/shorten.ts 支持两种用法dub shorten https://example.com my-key即直接传入目标 URL 和短链 key不传参数时则进入交互式提示依次询问Destination URL和Short linkkey 会预填一个随机值。创建成功后终端显示New short link created!并以绿色打印生成的短链失败时显示Failed to create link并抛出错误。README 中列出的其余命令可在登录后按需使用dub domains配置 workspace 域名dub links -s search按名称搜索链接dub links -l limit限制返回条数默认 10dub help [command]查看具体命令的帮助。到这里本地构建、全局 link、首次登录这条路径就完整了pnpm buildnpm link让dub命令可用dub login完成 OAuth 授权并落盘凭据dub config能读到凭据即代表登录生效之后的dub shorten等操作都会自动复用并在过期时刷新这份配置。【免费下载链接】dubThe modern link attribution platform. Loved by world-class marketing teams like Framer, Perplexity, Superhuman, Twilio, Buffer and more.项目地址: https://gitcode.com/GitHub_Trending/du/dub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考