@buoy-gg/angular

中文文档
7.0.87发布于 2026/11/07TypeScriptES Module近 30 天下载 3593

在Angular应用程序中运行Buoy.

中文使用文档
文档目录10 节
  1. 安装并签名
  2. 纳克加写什么
  3. QA 构建
  4. NgRx 存储
  5. 导航系统
  6. 路由器、查询和高亮
  7. 角19和自定义构建者
  8. 其他商店和电话应用程序
  9. 应用程序
  10. 手动设置

角质布依

让你的编码代理安装Buoy. 复制 角安装提示。 。 。 . 它的指南是 安装-angula.md。 。 。 . 看着拖车 角页面。 。 。 .

Buoy在Angular作为β运行. 开始于第一景后,在Angular的区外. 它与应用程序停止并跳过服务器. 你的应用程序保持它的角视图和状态. Buoy为自己的UI使用React.

安装并签名

从您的应用程序文件夹中运行这些 :

ng add @buoy-gg/angular
npx --package=@buoy-gg/core buoy login
ng serve

快速选择您想要的工具 . 网络、 控制台、 存储、 事件和 Env 开始检查 . 快速检查工具也符合应用程序:

  • 如果应用程序有Angular路由器,则使用路线.
  • 问若有角相.
  • 如果它有NgRx或NGXS,则Redux.
  • 在Angular 20或更新的上亮相.

React, React DOM, 和RN Web 和 Buoy 一起来. 对所有Buoy包使用相同的版本. 为了日后添加一个工具,安装它的Buoy包. 重新开始 ng serve 以装入新列表. 当列表更改时, 服务器会打印一个重启注释 . 一秒钟 ng add 运行离开您的文件.

对于多个应用程序,请按名称选择:

ng add @buoy-gg/angular --project my-app
npx --package=@buoy-gg/core buoy login --project my-app

登录写入 src/environments/buoy.ts 在应用程序的源根下. 建筑师读到它 BUOY_KEY 给你的. 登录也为本地的Buoy工具写出一个env文件. 它增加了两个文件 .gitignore别让他们犯错. Dev 令牌和自由密钥在密钥文件中保留了 dev guard. 每个人用自己的账户签名.

纳克加写什么

单位 angular.json,它改变两个构建者名称:

{
  "build": {
    "builder": "@buoy-gg/angular:application"
  },
  "serve": {
    "builder": "@buoy-gg/angular:dev-server"
  }
}

保持每个目标的其他场并构建配置. ng add 当它改变时 保留那些田地. 上面加了这个电话 app.config.ts数字 :

import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
import { provideBuoy } from '@buoy-gg/angular';
import { routes } from './app.routes';

export const appConfig: ApplicationConfig = {
  providers: [
    provideRouter(routes),
    // Keep the app's other providers here.
    provideBuoy(),
  ],
};

对于NgModule apps,它把电话最后一次输入 @NgModule.providers。 。 。 . 建设者在应用开始前会加入轻钩. 让网络看到第一个应用程序初始化的电话. 它装入所有已安装的工具 。 你不必这样 buoy.ts 列表中选择一个选项. 你不需要布伊警卫或护身符.

Prod将Buoy换成一个小而空的供应商. 主机,工具,React DOM,和RN Web不对外开放. NgRx DevTools需要自己的德夫卫士,如下所示. SSR和先发制人让Buoy远离服务器代码. 守望楼使用同样的规则.

QA 构建

为了将Buoy保留在QA建筑中,设置此建筑选项:

{
  "buoy": { "release": true }
}

把它放在QA配置下方 build.configurations。 。 。 . 它保留了浏览器工具并打开了早期的钩子. 服务器捆绑仍然使用空提供者. 为了放行,你的团队与Buoy签约. 添加您的站点 浮标.gg/板/站点。 。 。 . 那就通过 provideBuoy({ signIn: true })。 。 。 . 一个付了钱的钥匙也是作为备用的. 你的应用程序的接入规则和计划仍然适用. Dev 令牌和免入登录的密钥不要使用prod代码. NgRx,NGXS,和高亮仍然需要Angular dev模式.

NgRx 存储

保持正常的存储和效果设置. 添加 @ngrx/store-devtools 并选择 Redux 工具. 将NgRx DevTools保存在德克萨斯卫士中. 打开 provideBuoy() 提供者列表中最后一个 :

import { provideStoreDevtools } from '@ngrx/store-devtools';
import { provideBuoy } from '@buoy-gg/angular';

declare const ngDevMode: boolean | undefined;

// At the end of the app's providers:
(typeof ngDevMode === 'undefined' || ngDevMode)
  ? provideStoreDevtools({ maxAge: 50 })
  : [],
provideBuoy(),

与建造者不需要额外的NgRx桥接通. Buoy 提供 REDUX_DEVTOOLS_EXTENSION 通过 DI. 它从来没有声称 window.__REDUX_DEVTOOLS_EXTENSION__。 。 。 . 如果另一个提供者获胜, Dev 将打印此警告 :

[Buoy] NgRx has no Buoy link. Move provideBuoy() last in providers.

该工具显示动作、状态和 diffs . 重放增加了一行新内容. 跳跃恢复选定的状态. 州跳可能要花一秒钟. 后卫保持了NgRx DevTools出道. logOnly 单枪匹马仍然在运送密码. 老套装可以留着 provideBuoyNgRx() 之后 provideStoreDevtools()。 。 。 .

导航系统

选择 Redux 工具并保留应用程序的 NGXS 存储. NGXS仍然需要自己的适配器呼叫:

import { provideBuoy } from '@buoy-gg/angular';
import { provideBuoyNgxs } from '@buoy-gg/angular/ngxs';

declare const ngDevMode: boolean | undefined;

// At the end of the app's providers:
(typeof ngDevMode === 'undefined' || ngDevMode)
  ? provideBuoyNgxs()
  : [],
provideBuoy(),

这个用 NGXS_PLUGINS 通过 DI. 它不需要浏览器全局或 @ngxs/devtools-plugin。 。 。 . 我们用RxJS 7.8测试了NGXS 22. 用一个适配器. 不混合 NGRx 和 NGXS 桥 . 跳跃呼叫 Store.reset重播电话 Store.dispatch。 。 。 . 同步动作在结束时显示. 错误仍然到达 NGXS . 已取消但无结果的动作不添加行 .

路由器、查询和高亮

与建造者, provideBuoy() 通过 DI 链接这些工具. 路由读取了应用程序的路由器和路由列表. 去问吧 id 在一个路径像 /pokemon/:id。 。 。 . 懒童路线显示,一旦应用加载它们.

腾讯使用app的Angular查询客户端. 保持原样 provideTanStackQuery(queryClient) 电话. 当你选择查询时, ng add 添加 @tanstack/react-query。 。 。 . Buoy的UI需要旁边的对等点 @buoy-gg/react-query。 。 。 . 匹配其版本为 @tanstack/angular-query-experimental。 。 。 . 两者必须解决同样的问题 @tanstack/query-core 版本和复制. 检查 pnpm why @tanstack/query-core 或者说 npm ls @tanstack/query-core。 。 。 . 拆分副本可以分解类型或离线开关. 密钥,数据,和回放都使用应用程序的客户端.

突出显示为每个视图绘制框并计数检查 . 它需要Angular 20或更新的和dev钩. 缺失的钩子显示"在这个应用程序里没有" Buoy将其他钩子留在原地并停止自取. 计数是视图检查,而不是油漆或 DOM 写作. 名单最多可容纳200人. 它没有给出React的原因或计时数据. 钩为私人API. 检查一下Angular升级.

角19和自定义构建者

Buoy建筑商与CLI 19、20、21和22合作. 新鲜的应用程序运行覆盖19,20和22. CLI 21是从它的种类和计划中检查出来的. 突出点不要出现在19号角上.

CLI 19 没有 conditions 选项. Buoy建筑商在那个CLI上 做了自己的活页交换. 新的 CLI 19 应用程序可能使用 @angular-devkit/build-angular。 。 。 . ng add 保持建设者并写手动设置.

同样的规则也适用于自定义构建者和Nx目标. ng add 读取目标 angular.json。 。 。 . 只有交换 @angular/build 建设者名. 对于其他建筑商来说,它印出它保存它们的原因. 它写出钩子,工具列表,dev guard,以及prod config. CLI 20+ 获得 buoy-disabled 条件. 检查您的自定义构建器是否接受 conditions。 。 。 . 如果没有,则使用条目文件互换. CLI 19 和 Webpack 获得条目文件互换代替. 工具列表也获得 prod 文件互换 . 保持路由器,查询和状态工具的手动应用链接. Nx 无的布局 angular.json,使用手动设置.

其他商店和电话应用程序

香草Zustand商店需要命名的商店物品. 过 zustandStores: { ui: uiStore } 在应用程序选项中. 安装 Zustand 工具 。 造者寻之. 它显示状态,变化,diff,和编辑.

信号Store还没有Buoy DI的特性. 不使用 NgRx 桥来信号 Store . 正在计划一个信号视图。 它没有运出. 它将显示当前页面使用的信号. 它不能列出应用程序中的每个信号. 乔泰需要与乔泰州合作的应用.

Angular 22 默认用于取取 HttpClient . 使用 provideHttpClient(withXhr()) 如果应用程序需要XHR. 离子角电话请参看 电容指南。 。 。 . 桌面链接和电话接线钩仍然需要自己的设置.

应用程序

选项添加到构建器找到的设置中 . 保持Buoy呼叫在提供者列表中的最后一位. 传递一个物体,或者一个呼叫的工厂 inject()数字 :

provideBuoy({ zustandStores: { ui: uiStore } }),

// Or use a factory for app services:
provideBuoy(() => ({ queryClient: inject(QueryClient) })),

选择一个电话。 不同时使用. 该厂一度在应用的DI上下文中运行. 可以读商店 inject(Store) 我也一样. 路由器,查询器,高亮和NgRx仍然获得他们的链接. 构建器仍然装入每个已安装的工具 . 自定义 apps 和一个测试经纪人在这里工作.

合并规则是:

  • App 键替换自动键 。  queryClient 赢了.
  • load() 在应用程序选项后, 最后添加其密钥 .
  • 列表和嵌入对象替换整个值. 这包括: apps, (中文(简体) ), zustandStores,以及 externalSync。 。 。 .
  • links 以工具 ID 合并 。 你的连结赢得了ID. 每个链接在渲染后运行并返回一个停止函数 . Buoy每停一停,再加上你 onDestroy。 。 。 .
  • 明确 modules 地图或加载器自动关闭. 它将手动路径保存在下面,有你自己的链接.

要使用您自己的路由链接, 请在选项中通过 :

links: {
  'route-events': async () => {
    const { connectBuoyRouter } = await import('@buoy-gg/angular/router');
    return zone.runOutsideAngular(() =>
      connectBuoyRouter(router, fn => zone.run(fn)),
    );
  },
},

获取 router 财务报告和审定财务报表 zone 与 inject() 在工厂. 这只取代了路由链接 高亮继续. 使用 highlight-updates 以取代链接. 对于懒惰的应用程序设置,请 load() 返回挂载选项. 别管了 modules 以保留构建者的工具列表. 装载机和链接回调器运行于区外. 他们晚点跑,打个电话 inject() 在工厂.

手动设置

通过自己的工具列表时使用此路径 . 现有 provideBuoy({ modules, ... }) 电话还正常. 一个工厂, provideBuoy(() => options),可以调用 inject()。 。 。 . load 可以同时返回所有挂载设置. onDestroy 停止应用钩; onMount 获得停止功能. 明确 modules 地图或加载器选择此路径. 与构建器,其他选项保持了自动链接.

先把灯钩放进去 src/main.ts数字 :

import '@buoy-gg/angular/register';

不要使用反应检查钩 @buoy-gg/core/web/register。 。 。 . 制作一个工具列表,然后通过它后面的 dev guard:

// src/buoy.ts
import { BUOY_KEY } from './environments/buoy';
export const buoyOptions = {
  licenseKey: BUOY_KEY,
  modules: async () => ({
    network: await import('@buoy-gg/network/web'),
  }),
};
// src/app/app.config.ts
import { provideBuoy } from '@buoy-gg/angular';
import { buoyOptions } from '../buoy';

declare const ngDevMode: boolean | undefined;

// Last in the app's providers:
(typeof ngDevMode === 'undefined' || ngDevMode)
  ? provideBuoy(buoyOptions)
  : [],

对于CLI 20+ 接受的建造者 conditions,使用:

{
  "conditions": ["buoy-disabled", "module", "production"],
  "fileReplacements": [
    { "replace": "src/buoy.ts", "with": "src/buoy.prod.ts" }
  ]
}
// src/buoy.prod.ts
export const buoyOptions = {};

保持警卫和档案交换. 运行时间 isDevMode() 仅检查工具块. 对于CLI 19或网络包装,让 ng add 写入条目交换. 或使用无 Buoy 导入的 prod 条目和配置文件 . 把应用程序的供应商保存在这些 prod 文件中.

在手动加载器中,根据需要使用这些应用链接:

工具手动链接
路线打电话 connectBuoyRouter(router, fn => zone.run(fn)) 从 @buoy-gg/angular/router停下来 onDestroy。 。 。 .
突出显示打电话 connectBuoyHighlights(module.HighlightUpdatesController, fn => zone.runOutsideAngular(fn)) 从 @buoy-gg/angular/highlights停下来 onDestroy。 。 。 .
NgRx 函数打开 provideBuoyNgRx() 在NgRx DevTools之后, 在同一德夫卫士内部.
查询通过应用程序 queryClient 编辑 'react-query' 模块.
苏斯坦德过 zustandStores 编辑 zustand 模块.

手动QA建设也需要 enableInRelease: true。 。 。 . 保持他们的应用守护真实,并省略了prod互换. 开始 registerBrowserNetwork({ enableInRelease: true }) 从轻取钩入. 桌面链接需要 externalSync: { enableInRelease: true } 我也一样. 在返回的设置中保留此旗帜 load。 。 。 . 远程电话检查在打开工具前可能需要这些电话: bootLifecycle(), (中文(简体) ), installLocationAdapters(), (中文(简体) ), installPermissions(),以及 installCapacitorNotificationCapture({ enableInRelease: true })。 。 。 . 只使用该应用中安装的模块 .

版本与发布记录

@buoy-gg/angular 共发布 25 个版本,首次发布于 2026/10/09;过去 12 个月发布了 25 个版本。

版本发布日期距今
7.0.87latest2026/11/071 天前
7.0.862026/11/062 天前
7.0.852026/11/053 天前
7.0.842026/11/035 天前
7.0.832026/11/035 天前
7.0.822026/11/036 天前

关于 @buoy-gg/angular 的常见问题

@buoy-gg/angular 是什么?

在Angular应用程序中运行Buoy.

如何安装 @buoy-gg/angular?

在项目目录运行 npm install @buoy-gg/angular,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@angular/core(>=19 <23)、@angular/common(>=19 <23)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@buoy-gg/angular 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@buoy-gg/angular 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@buoy-gg/angular 可以商用吗?

@buoy-gg/angular 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@buoy-gg/angular 的下载量有多少?

根据 npm 官方下载统计,@buoy-gg/angular 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,593 次,日均约 120 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@buoy-gg/angular 还在维护吗?

最新版本 7.0.87 发布于 2026/11/07(1 天前);至今共发布 25 个版本,其中过去 12 个月发布了 25 个;首次发布于 2026/10/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。