
人工智能AI Agent浏览器控制AI 应用【免费下载链接】nanobrowserOpen-Source Chrome extension for AI-powered web automation. Run multi-agent workflows using your own LLM API key. Alternative to OpenAI Operator.项目地址https://gitcode.com/GitHub_Trending/na/nanobrowser点击查看免费下载nanobrowser 是一个基于 pnpm workspace 与 Turborepo 构建的开源 Chrome 扩展 monorepo其版本号同时存在于根目录与各子包共 16 个package.json中当前仓库内统一为0.1.13。本指南围绕仓库根目录下的 UPDATE-PACKAGE-VERSIONS.md 展开介绍如何通过一条命令完成所有包版本号的统一更新并从 update_version.sh 源码层面剖析其校验、遍历与替换机制帮助你安全、正确地执行版本发布前的同步操作。一、为什么需要一键更新版本nanobrowser 的仓库采用 pnpm workspace 管理多包结构从 pnpm-workspace.yaml 可以看到packages: - chrome-extension - pages/* - packages/*实际存在的package.json分布在根目录、chrome-extension/、pages/content / options / side-panel以及packages/dev-utils、hmr、i18n、schema-utils、shared、storage、tailwind-config、tsconfig、ui、vite-config、zipper共 16 个位置且彼此版本号必须保持一致否则会导致工作区内包依赖版本错乱。更重要的是浏览器扩展的 manifest 版本号直接来源于根package.json。在 chrome-extension/manifest.js 中const packageJson JSON.parse(fs.readFileSync(../package.json, utf8));随后version: packageJson.version被写入 Manifest V3 配置见 manifest.js。也就是说package.json的版本号直接决定了 Chrome Web Store 中扩展的发布版本。因此每次发版时必须同步提升所有包的版本号这正是update-version脚本存在的意义。二、使用方法一条命令完成全局版本更新在仓库根目录执行注意脚本由 package.json 中的update-version: bash update_version.sh注册为 pnpm 脚本pnpm update-version new_version版本格式必须为0.0.0三段式例如pnpm update-version 0.2.0执行成功后终端会输出Updated versions to 0.2.0如果传入的版本号不符合三段式格式脚本不会做任何修改而是输出错误提示详见下文源码分析。Windows 用户的注意事项脚本依赖bash、find、grep、perl等 UNIX 命令因此在 Windows 下必须使用支持 UNIX 命令的终端执行例如Git Bash不能直接在 CMD 或 PowerShell 中运行否则会因找不到bash而报错。输出信息解读输出内容含义是否已生效Updated versions to new_version所有package.json的版本号均已替换为new_version是Version format xxx isnt correct, proper format is 0.0.0传入的xxx不满足0.0.0格式脚本中止否未做任何修改三、实现原理读懂 update_version.sh执行pnpm update-version实际调用的是根目录下的 update_version.sh完整逻辑分三步1. 版本号格式校验if [[ $1 ~ ^[0-9]\.[0-9]\.[0-9]$ ]]; then脚本首先用正则表达式^[0-9]\.[0-9]\.[0-9]$校验第一个参数$1必须是「数字.数字.数字」结构如0.1.13。校验失败则进入else分支输出格式错误提示并退出不会触碰任何文件保证错误输入下仓库版本号安全。2. 遍历并替换所有 package.jsonfind . -name package.json -not -path */node_modules/* -exec bash -c current_version$(grep -o \version\: \[^\]* $0 | cut -d\ -f4) perl -i -pes/$current_version/$1/ $0 {} \;这段命令做了三件事find . -name package.json从根目录递归查找所有package.json通过-not -path */node_modules/*排除node_modules中的第三方包确保只更新仓库自身的版本号grep -o \version\: \[^\]* | cut -d\ -f4从每个文件中提取当前版本号字符串作为后续替换的匹配目标perl -i -pe s/$current_version/$1/在原文件中进行原地-i替换把当前版本号替换为命令行传入的新版本号。3. 输出成功信息echo Updated versions to $1;全部替换完成后打印Updated versions to new_version与你看到的命令输出一一对应。一个值得注意的实现细节脚本是基于「当前版本号字符串」做精确替换而不是直接把version: xxx整体改写。这带来两点影响由于各包当前版本号统一替换后仍能保持全局一致但该实现只替换字符串字面量若package.json中某处恰好出现相同的数字字符串例如依赖版本恰好与包版本相同理论上也存在被一并替换的可能。因此在执行后建议通过git diff核对改动范围确认只修改了预期的version字段。四、验证执行结果脚本执行完成后可以用以下命令快速验证所有包的版本号是否已统一grep -rn version --includepackage.json . | grep -v node_modules正常输出应为 16 行且version值完全一致例如当前仓库中全部为0.1.13./package.json:3: version: 0.1.13, ./chrome-extension/package.json:3: version: 0.1.13, ./pages/side-panel/package.json:3: version: 0.1.13, ./pages/content/package.json:3: version: 0.1.13, ./pages/options/package.json:3: version: 0.1.13, ./packages/storage/package.json:3: version: 0.1.13, ...五、在发布流程中的位置在 nanobrowser 的日常开发中版本更新是发布链路的一环。根 package.json 定义了完整的工作流脚本pnpm build清理后由 Turbo 按依赖顺序构建全部包pnpm zip构建并打包成可分发产物调用packages/zipperpnpm update-version new_version发版前同步所有包版本号随后pnpm build/pnpm zip生成的产物即携带新版本。具体到浏览器扩展由于 chrome-extension/manifest.js 的version字段直接引用根package.json的版本号执行pnpm update-version之后下一次构建产出的manifest.json会自动带上新版本无需再手动修改 manifest 或重复更新其他包。六、常见问题小结问题原因解决办法Windows 下提示找不到bash脚本依赖 UNIX 命令改用 Git Bash 或其他支持 UNIX 命令的终端提示Version format ... isnt correct版本号不是0.0.0三段式使用形如0.2.0的格式重新执行想确认改动范围脚本按字符串替换执行后运行git diff核对仅version字段被修改结语pnpm update-version是 nanobrowser 发版流程中成本最低、却最容易出错的环节。理解 update_version.sh 的校验、遍历与替换逻辑后你既能安全地一键同步 16 个package.json的版本号也能在遇到格式错误、Windows 环境差异等问题时快速定位原因。建议将其与git diff、grep -rn version结合使用形成「执行 → 核对 → 构建 → 打包」的标准化发版闭环。赞分享人工智能AI Agent浏览器控制AI 应用【免费下载链接】nanobrowserOpen-Source Chrome extension for AI-powered web automation. Run multi-agent workflows using your own LLM API key. Alternative to OpenAI Operator.项目地址https://gitcode.com/GitHub_Trending/na/nanobrowser点击查看免费下载相关推荐pnpm 系统运行时版本检测pnpm/engine.runtime.system-version 实现与原理pnpm 系统运行时版本检测 pnpm/engine.runtime.system version 实现与原理 本指南以 pnpm11/engine/run包管理器开发工具CLISubtitle Edit macOS 打包版本同步指南update-plist-version.sh 原理、用法与 CI 集成Subtitle Edit macOS 打包版本同步指南update plist version.sh 原理、用法与 CI 集成 Subtitle Edit音视频桌面应用pnpm 递归更新精确定位pnpm update nameversion 版本线隔离机制的修复与原理pnpm 递归更新精确定位 pnpm update name version 版本线隔离机制的修复与原理 本篇技术指南围绕 pnpm 中 pnpm up包管理器开发工具CLI上一篇Rust 兼容 Shell 内核 brush / brush-core 实战指南在 oh-my-pi 中的嵌入与二次开发下一篇Instagrapi批量操作同时下载多个用户的所有内容创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考