尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
nanobrowser 多包版本一键同步:`pnpm update-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点击查看免费下载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),仅供参考
RELATED

相关推荐

从零实现循环神经网络(RNN):D2L 手写字符级语言模型全解析

从零实现循环神经网络(RNN):D2L 手写字符级语言模型全解析

文档教程人工智能深度学习NLP计算机视觉强化学习 【免费下载链接】d2l-en Interactive deep learning book with multi-framework code, math, and discussions. Adopted at 500 universities from 70 countries including Stanford, MIT, Harvard, and Cambridge. 项目地址&am…

📅 2026/10/3 1:51:33
gitoxide 凭据子系统剖析:gix-credentials 的协议、Helper 级联与安全演进

gitoxide 凭据子系统剖析:gix-credentials 的协议、Helper 级联与安全演进

版本控制CLI 【免费下载链接】gitoxide An idiomatic, lean, fast & safe pure Rust implementation of Git 项目地址: https://gitcode.com/GitHub_Trending/gi/gitoxide 点击查看 免费下载 本文以 gitoxide 仓库中 gix-credentials/CHANGELOG.md 为脉络主线&…

📅 2026/10/3 1:46:32
ml-engineering 实战:用 Transformers 的 Finetuning 示例从零重训 HF Hub 模型(from_config 初始化法)

ml-engineering 实战:用 Transformers 的 Finetuning 示例从零重训 HF Hub 模型(from_config 初始化法)

人工智能大模型AI 技能/插件分布式训练微调深度学习 【免费下载链接】ml-engineering Machine Learning Engineering Open Book 项目地址: https://gitcode.com/gh_mirrors/ml/ml-engineering 点击查看 免费下载 本篇技术指南来自 ml-engineering 开源仓库的 Re-tr…

📅 2026/10/3 1:46:32
MORE NEWS

更多资讯

📰

用 thiserror 派生宏消除自定义错误样板代码:100-exercises-to-learn-rust 的 TicketNewError 实战

示例工程教程 【免费下载链接】100-exercises-to-learn-rust A self-paced course to learn Rust, one exercise at a time. 项目地址: https://gitcode.com/GitHub_Trending/10/100-exercises-to-learn-rust 点击查看 免费下载 本篇指南聚焦 Rust 生态中最常用的错…

📰

IDM-VTON 人体解析工具链:Detectron2 tools 目录训练、评测与可视化脚本全解析

计算机视觉深度学习媒体生成 【免费下载链接】IDM-VTON [ECCV2024] IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild 项目地址: https://gitcode.com/GitHub_Trending/id/IDM-VTON 点击查看 免费下载 导读:本文围绕 I…

📰

基于多视觉语言模型交叉描述的智能眼镜图像理解与质量评估实战指南(OpenGlass 项目)

人工智能AI 应用智能硬件本地部署可穿戴AI Agent 【免费下载链接】OpenGlass Turn any glasses into AI-powered smart glasses 项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass 点击查看 免费下载 OpenGlass 是一个让任何普通眼镜变身 AI 智能眼镜的…

📰

Toonflow 更新说明全解读:从 21 种语言界面到画布复制、FFmpeg 工具与桌面更新机制

人工智能AI 应用AI AgentRAGAI 写作后端桌面应用 【免费下载链接】Toonflow-app Toonflow 是一款 AI 短剧漫剧工具,能够利用 AI 技术将小说自动转化为剧本,并结合 AI 生成的图片和视频,实现高效的短剧创作。借助 Toonflow,可以轻松…

📰

AI-For-Beginners Game Jam 作业实战指南:以「过去—现在—未来」框架剖析游戏中的 AI 进化

教程人工智能机器学习深度学习 【免费下载链接】AI-For-Beginners 12 Weeks, 24 Lessons, AI for All! 项目地址: https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners 点击查看 免费下载 本指南基于 AI-For-Beginners 第 1 课(Introduction to A…

📰

telegram - api-reference

Telegram Bot API - 完整参考 目录 认证发送方法编辑方法聊天方法成员方法更新与 Webhook机器人配置主要类型解析模式错误代码 认证 基础 URL&#xff1a; https://api.telegram.org/bot<TOKEN>/<METHOD> 文件 URL&#xff1a; https://api.telegram.org/file/b…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬