# @abgov/nx-adsp 中文文档

规范地址：https://npmcn.com/package/%40abgov/nx-adsp/

版本：13\.33\.5
npm 元数据更新时间：2026-10-02T19:04:25.732Z
中文译文更新时间：2026-11-06T20:08:14.313Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40abgov/nx-adsp
原文对照：https://npmcn.com/package/%40abgov/nx-adsp/?lang=original
项目主页：https://github.com/GovAlta/nx-tools#readme
源码仓库：https://github.com/GovAlta/nx-tools

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.9 MB，321 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：4 个
- peer 依赖：tslib ^2\.0\.0，eslint ^8\.0\.0 \|\| ^9\.0\.0 \|\| ^10\.0\.0，@nx/vue ^23\.0\.0，@nx/react ^23\.0\.0，@nx/devkit ^23\.0\.0，@nx/eslint ^23\.0\.0，@nx/angular ^23\.0\.0，@nx/express ^23\.0\.0，@abgov/nx-oc ^13\.0\.0-0
- 首次发布：2021-03-29T17:06:23.002Z
- 最新版本发布：2026-10-02T19:04:25.380Z
- 近 30 天下载量：2403（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：250（近 12 个月 147 个）

## 中文简介

艾伯塔省政府-ADSP应用的Nx插件.

## 安装

```sh
npm install @abgov/nx-adsp
```

也可以使用：`pnpm add @abgov/nx-adsp`、`yarn add @abgov/nx-adsp`、`bun add @abgov/nx-adsp`

## README

# @abgov/nx-adsp

Nx 拖放插件 [高级秘书处](https://govalta.github.io/adsp-monorepo/) 向艾伯塔省政府提出申请.

该插件为节点/Express服务,React,Angular,和Vue 3前端,.NET服务和fulstack解决方案提供发电机. 何时 `@abgov/nx-oc` 也安装在工作空间中, OpenShift 部署 YAML 自动包含在生成的输出中.

## 先决条件

只为您使用的生成器安装框架对等器—— 它们被宣布 作为 **选项** 端点依赖性,所以只构建 Vue apps 的工作空间 没必要 `@nx/react`, (中文(简体) ), `@nx/angular`等 (中文(简体) ).

| 发电机 | 所需同伴依赖 |
| --- | --- |
| `react-app` | `@nx/react` |
| `angular-app` | `@nx/angular` |
| `vue-app` | `@nx/vue` |
| `dotnet-service` | `@nx-dotnet/core` |
| `react-dotnet` | `@nx/react`, (中文(简体) ), `@nx-dotnet/core` |
| `express-service` | `@nx/express` |
| `pevn`, (中文(简体) ), `mevn` (满口) | `@nx/express`, (中文(简体) ), `@nx/vue` |
| `pern`, (中文(简体) ), `pean` (满口) | `@nx/express`, (中文(简体) ), `@nx/react`编号 :`@nx/angular` |
| `react-form`, (中文(简体) ), `react-task-list` | 工作空间中的现有反应项目 |
| `vue-detail-view`, (中文(简体) ), `vue-workspace-view`, (中文(简体) ), `vue-admin-crud`, (中文(简体) ), `vue-intake-view` | 现有 `vue-app` 工作空间中的项目 |

## 安装

```bash
npm i -D @abgov/nx-adsp
```

## 快速启动

```bash
# 1. Create a workspace
npx create-nx-workspace my-workspace

# 2. Install the plugin and any required peer dependencies
npm i -D @abgov/nx-adsp @nx/express

# 3. Set up nx-adsp's own workspace-root concerns (ADSP SDK MCP server, VS Code
#    settings) — always run this right after installing the plugin. Every
#    app/service generator below also runs it as one of its own steps, but
#    running it here means grounded ADSP platform knowledge is available
#    immediately, not only once you've scaffolded your first app.
npx nx g @abgov/nx-adsp:init

# 4. Generate a quickstart (interactive prompts fill missing options)
npx nx g @abgov/nx-adsp:express-service my-service --env dev --tenant my-tenant
```

## 全速启动( PEVN ~ sandbox)

这是从一个空文件夹到一个编码代理可遵循的端到端路径 在 OpenShift 沙盒中运行全存储应用程序 。 插件需要 **Nx 23号**, (中文(简体) ), 哪个 `create-nx-workspace@latest` 默认生成.

部署沙盒的先决条件(步骤4-5): `podman` (机器开始 马科斯, `oc` 登录到沙盒集群和GitHub CLI(`gh`(中文(简体) ) 认证为账户 **`write:packages`** 在您的注册 .

> **编码代理 :** 用 `--no-interactive` **财务报告和审定财务报表** 所需时间 选项(名称, `--env`, (中文(简体) ), `--sandboxProject`——否则Nx 提示 您的会话会等待输入。 设置 `CI=true` 在洞里有一条 相同效果并跳过 Nx Cloud 提示。 ()`nx run <target>` 执行者 不要催促,这只适用于 `nx g` 发电机。 ) 也通过 `--skipAgent` 看到了吗 [代理咨询](https://npmcn.com/package/%40abgov/nx-adsp/#readme-agent-consultation) 因为你为什么想要,不只是 怎么样? 以下命令已经遵循此命令 .

```bash
# 1. Empty folder → Nx workspace (the plugins require Nx 23)
npx create-nx-workspace@latest my-solution --preset=apps --workspaceType=integrated --nxCloud=skip --no-interactive
cd my-solution

# 2. Install the plugins + stack peers (match @nx/* to the workspace nx version)
NXV=$(node -p "require('./node_modules/nx/package.json').version")
npm i -D @abgov/nx-oc @abgov/nx-adsp "@nx/express@$NXV" "@nx/vue@$NXV" "@nx/node@$NXV" "@nx/js@$NXV" "@nx/eslint@$NXV"

# 3. Sign in to ADSP once (OOB flow: prints an auth URL + prompts for the code; token is cached)
npx @abgov/adsp-cli login --env test --tenant "<Your Tenant>" --scope adsp-cli-admin

# 4. Scaffold a Postgres + Express + Vue + Node solution
npx nx g @abgov/nx-adsp:pevn acme --env=dev --tenant=my-tenant --no-interactive --skipAgent

# 5. Add sandbox targets (registry derives from the git remote, or pass --registry=ghcr.io/<org>;
#    the database is auto-detected from the service — no --database needed)
npx nx g @abgov/nx-oc:sandbox acme-service --sandboxProject=<namespace> --registry=ghcr.io/<org> --tenant=my-tenant --env=dev --no-interactive
npx nx g @abgov/nx-oc:sandbox acme-app --sandboxProject=<namespace> --tenant=my-tenant --env=dev --no-interactive

# 6. Deploy — backend first so the frontend's /api proxy resolves
npx nx run acme-service:sandbox
npx nx run acme-app:sandbox            # or: --deployBackend to bring the backend up in the same run
```

每个生成的应用程序都有 `AGENTS.md` (框架 + ADSP 上下文),一次 第5步运行, a `.openshift/<app>/SANDBOX.md` 部署/分解程序簿. 见 [`@abgov/nx-oc`](https://www.npmjs.com/package/@abgov/nx-oc) 给沙盒 部署细节.

## 发电机

### `init`

设置 nx-adsp 自己的工作空间- root 关切: 安装 ADSP SDK MCP 服务器 (单位:千美元)`@abgov/adsp-sdk-mcp-server`)作为dev属地,并注册在 `.mcp.json`,并共享 VS代码设置. 每个应用/服务 下方的生成器已经作为自己的步骤之一运行了它——总是在紧接着运行 安装插件,因此基于ADSP平台知识(租户/真人/角色模型, `@abgov/adsp-service-sdk` (参考文献) 立即提供, 不只是你脚手架 你的第一个应用程序。 这一差距对于作出决定很重要 _在此之前_ 任何应用程序都存在——设计通行证,用于 ——脚手架-再生子副作用永远无法及时达到.

```bash
npx nx g @abgov/nx-adsp:init
```

没有选择 同上——合并为现有 `.mcp.json`编号 :`.vscode/settings.json` 无 一个定制服务器 `adsp-sdk` 输入,一个你粘住自己的版本,或 不相关的设置; 安全重运行 。 工程范围 MCP 服务器仅在会话开始时加载, 所以 安装依赖关系,然后在运行此程序之前重新连接( 或重新启动) MCP 客户端 依靠新的工具——发电机自己的输出是这样说来提醒的.

服务器是一个 dev 依赖而非点播 `npx -y` 获取此版本 代理执行是解开的锁文件 `npm audit` 可以看到,与其 过渡性依赖。 这个 `.mcp.json` 条目用途 `npx --no`,它更喜欢本地安装 在npm的任何东西 `_npx` 缓存, 拒绝到注册处获取您没有的版本 已安装。 平面 `npx` 因为npm假设 `--yes` 任何时候 stdin不是TTY,因为它从来不是Stdio MCP服务器.

值得一提的是: `--no` 治疗已经流行的 `_npx` 缓存条目满足 因此,在一台以前运行过 `npx -y` 格式将使用缓存副本 而不是错误。 运行 `npm install` 在依赖针头之前——有依赖存在 本地副本总是获胜.

* * *

### `express-service`

创建为 ADSP 配置的节点/ Express后端服务 .

```bash
npx nx g @abgov/nx-adsp:express-service my-service --env dev --tenant my-tenant
```

| 选项 | 别名 | 需求 | 说明 |
| --- | --- | --- | --- |
| `name` | —— 说 | 对 | 服务名称 |
| `env` | `-e` | 没有 | ADSP环境/接入服务. 默认为 `test` = access-uat.alberta.ca(UAT-用于dev和prod); `prod` = 访问.alberta.ca; `dev` = ADSP 平台dev(受限制) |
| `tenant` | `-t` | 没有 | ADSP 租户名; 按名称解决 Keycloak 域名( 签一次名 `@abgov/adsp-cli` - 见认证) |
| `tenantRealm` | `-tr` | 没有 | Keycloak 域 UUID; 覆盖解析的域 `--tenant` |
| `accessToken` | `-at` | 没有 | 非交互检索 ADSP 配置的访问令牌 |

OpenAPI Docs 由已经用于请求验证的同一种 Zod schemas 生成 (单位:千美元)`@asteasolutions/zod-to-openapi`并任职于 `/swagger/docs/v1` 没有单独的规格 手作护持. 词根 `/` 终点 `_links.docs` 点,这是ADSP的目录 服务民意测验,将服务的API文件汇总为 `https://api.adsp.alberta.ca/{tenant}` (一次) 该服务有一个目录条目——在这个生成器外的一次性设置步骤).

* * *

### `react-app`

创建为 ADSP 配置的 React/Redux 前端应用程序 。 要求数 `@nx/react`。 。 。 .

```bash
npx nx g @abgov/nx-adsp:react-app my-app --env dev --tenant my-tenant
```

| 选项 | 别名 | 需求 | 说明 |
| --- | --- | --- | --- |
| `name` | —— 说 | 对 | 申请书名称 |
| `env` | `-e` | 没有 | ADSP环境/接入服务. 默认为 `test` = access-uat.alberta.ca(UAT-用于dev和prod); `prod` = 访问.alberta.ca; `dev` = ADSP 平台dev(受限制) |
| `tenant` | `-t` | 没有 | ADSP 租户名; 按名称解决 Keycloak 域名( 签一次名 `@abgov/adsp-cli` - 见认证) |
| `tenantRealm` | `-tr` | 没有 | Keycloak 域 UUID; 覆盖解析的域 `--tenant` |
| `accessToken` | `-at` | 没有 | 非交互检索 ADSP 配置的访问令牌 |
| `pairedProject` | —— 说 | 没有 | 获取 nginx/ dev- server 代理服务器和 `adsp:proxy-service:` 自动取出沙盒标签——工程必须已经存在 |
| `proxy` | —— 说 | 没有 | Nginx 代理规则为 `{ location, proxyPass }` 或此类对象的数组——其他条目 `--pairedProject` 不覆盖; 无法复制其位置 |

用一个已经脚手架的后端独立运行发电机? 过 `--pairedProject <backend-project-name>` 而不是手工计算 `--proxy` - 它得到同样的 `http://<name>:3333/<name>/` 公约 `pevn`编号 :`pern`编号 :`pean`编号 :`mevn` 已内部使用,加 标签 `@abgov/nx-oc:sandbox` 需要预先创建后端服务.

生成的 Playwright e2e 项目包括轴-核心无障碍检查(Playwright e2e)`a11y.spec.ts`, (中文(简体) ), 范围为WCAG 2.1 A/AA, 自动运行为 `e2e` 目标——没有单独的命令 需要帮助. `angular-app` 财务报告和审定财务报表 `vue-app` 包括相同的支票.

它的覆盖范围是 `ROUTES` 该光谱中的数组, 以 `['/']` 唯一的途径a 新生成的应用程序已经. **添加为应用程序的路径**,来自生成器或手动;否 生成器维护列表,以及 `/` 大部分是应用软件的外壳,所以很少练习应用软件 实际从。 期望真正的失败一旦扩大:一些失败来自内部 `@abgov/web-components`" 影子DOM,需要上游修复,而不是辅助改变.

* * *

### `angular-app`

创建为 ADSP 配置的角前端应用程序 。 要求数 `@nx/angular`。 。 。 .

```bash
npx nx g @abgov/nx-adsp:angular-app my-app --env dev --tenant my-tenant
```

接受与 `react-app`。 。 。 .

* * *

### `vue-app`

使用 GOA 网络组件为 ADSP 创建 Vue 3 前端应用程序 (单位:千美元)`@abgov/web-components`和 `@dsb-norge/vue-keycloak-js` 用于认证。 要求数 `@nx/vue`。 。 。 .

```bash
npx nx g @abgov/nx-adsp:vue-app my-app --env dev --tenant my-tenant
```

接受与 `react-app`,加上:

| 选项 | 需求 | 说明 |
| --- | --- | --- |
| `layout` | 没有 | 顶级应用程序外壳 : `header` (默认)是 `goa-app-header` + 英雄旗帜 + footer(公-发); `internal` 是一个 `goa-work-side-menu` 外壳,无头/板/脚(工作人员). 二号对战 `--pairedProject` 用于一个公共+内部前端在后端对齐 |

每个生成的应用程序条款都共享 `vue-components` 图书馆 - `Goab*` `v-model` 包装 超过设计系统外加可重复使用的应用壳图案组件(`AppLayout`, (中文(简体) ), `AppHeader`, (中文(简体) ), `AppFooter`, (中文(简体) ), `AppSideMenu`, (中文(简体) ), `SessionExpiredBanner`) ——参见生成的应用程序自己的 `AGENTS.md` 整个合同。 又有四台发电机改造了 共同视野的形状 变成了现有的 `vue-app` 项目;见下文.

* * *

### `dotnet-service`

创建 ASP.NET 为ADSP配置了核心后端服务. 要求数 `@nx-dotnet/core`。 。 。 .

```bash
npx nx g @abgov/nx-adsp:dotnet-service my-service --env dev --accessToken $TOKEN
```

| 选项 | 别名 | 需求 | 说明 |
| --- | --- | --- | --- |
| `name` | —— 说 | 对 | 服务名称 |
| `env` | `-e` | 没有 | ADSP环境/接入服务. 默认为 `test` = access-uat.alberta.ca(UAT-用于dev和prod); `prod` = 访问.alberta.ca; `dev` = ADSP 平台dev(受限制) |
| `accessToken` | `-at` | 没有 | 非交互检索 ADSP 配置的访问令牌 |

* * *

### `react-dotnet`

复合生成器,既能创建回放前端又能创建出.NET后端,作为全相机解决方案. 要求数 `@nx/react` 财务报告和审定财务报表 `@nx-dotnet/core`。 。 。 .

```bash
npx nx g @abgov/nx-adsp:react-dotnet my-solution --env dev
```

接受与 `dotnet-service`。 。 。 .

* * *

### `react-form`

添加由已有的 Resact 组件 [ADSP 表格定义](https://govalta.github.io/adsp-monorepo/) 用于现有项目。 生成器从 ADSP Form 服务中获取目标环境的表格定义.

```bash
npx nx g @abgov/nx-adsp:react-form my-app --env test
```

| 选项 | 别名 | 需求 | 说明 |
| --- | --- | --- | --- |
| `project` | —— 说 | 对 | 将窗体组件添加到 Nx 项目的名称 |
| `env` | `-e` | 没有 | 获取窗体定义的 ADSP 环境 。 默认为 `test` (UAT / access-uat.alberta.ca) (中文(简体) ) |
| `accessToken` | `-at` | 没有 | 非交互检索 ADSP 配置的访问令牌 |

* * *

### `react-task-list`

添加由 an [ADSP 任务队列](https://govalta.github.io/adsp-monorepo/) 用于现有项目.

```bash
npx nx g @abgov/nx-adsp:react-task-list my-app --env test
```

接受与 `react-form`。 。 。 .

* * *

### `vue-detail-view`

添加一个详细记录视图( 装入/ error/ 装入状态, 可选状态徽章, 后键) 到 现有 `vue-app` 项目,基于共享 `RecordDetailShell` 模式组件.

```bash
npx nx g @abgov/nx-adsp:vue-detail-view my-app --name=application-detail --resource=applications --route=/applications/:id --fields='[{"key":"status","label":"Status","type":"badge"}]'
```

| 选项 | 需求 | 说明 |
| --- | --- | --- |
| `project` | 对 | 这个 `vue-app` 将视图添加到 |
| `name` | 对 | 视图名称, 例如 . `application-detail` 生成 `src/views/ApplicationDetailView.vue` |
| `resource` | 对 | API 资源路径段——视图获取 `/api/v1/<resource>/:id` |
| `route` | 对 | 添加到路径 `router/index.ts`,比如说. `/applications/:id`。必须包含 `:id` 段落 |
| `fields` | 对 | 记录信息列表中生成的 JSON 阵列, 按显示顺序 : `{ key, label, type?: "text"|"date"|"currency"|"badge" }` —— JSON 字符串,不是逗号分隔的 CLI 阵列(见下文注) |
| `heading` | 没有 | 页面标题。 视图名称的默认值, 标题大小写 |
| `requiresAuth` | 没有 | 生成的路由是否需要认证 。 默认为 `true` |

* * *

### `vue-workspace-view`

添加一个工作人员配置、 粘贴列表视图( 已取消的搜索过滤栏 + 可排序列) 现有 `vue-app` 项目,基于共享 `WorkspaceTable` 模式组件.

```bash
npx nx g @abgov/nx-adsp:vue-workspace-view my-app --name=applications --resource=applications --route=/applications --detailRoute=/applications --columns='[{"key":"status","label":"Status","type":"badge","sortable":true}]'
```

| 选项 | 需求 | 说明 |
| --- | --- | --- |
| `project` | 对 | 这个 `vue-app` 将视图添加到 |
| `name` | 对 | 视图名称, 例如 . `applications` 生成 `src/views/ApplicationsListView.vue` |
| `resource` | 对 | API 资源路径段——获取 `/api/v1/<resource>?page=&limit=&search=&sortBy=&sortDir=` |
| `route` | 对 | 添加到路径 `router/index.ts`,比如说. `/applications` |
| `columns` | 对 | JSON 表格列阵列, 按显示顺序 : `{ key, label, type?: "text"|"date"|"currency"|"badge", sortable?, options?: [{value,label}], badgeMap?: {value: badgeType} }` 供应 `options` 用于作为代码存储的任何一列(或表格显示代码),以及 `badgeMap` 编号 `badge` 字符串(见下文注) |
| `detailRoute` | 没有 | 如果设定, 每个行都会有一个“ 查看” 动作链接到 `` `${detailRoute}/${row.id}` `` - 典型情况 `vue-detail-view`与 `:id` 线段已删除 |
| `filterable` | 没有 | 是否生成表格上方已解开的搜索输入 。 默认为 `true` |
| `heading` | 没有 | 页面标题。 视图名称的默认值, 标题大小写 |
| `pageSize` | 没有 | 每页行. 默认为 `20` |
| `icon` | 没有 | 生成的侧菜单条目的Ioncon名称 。 默认为 `list`。 。 。 . `goa-work-side-menu-item` 使空项无一 |
| `requiresAuth` | 没有 | 生成的路由是否需要认证 。 默认为 `true` |

* * *

### `vue-admin-crud`

添加一个简单的管理 CRUD 屏幕对 (a) `WorkspaceTable` 列表视图,带有创建动作和 每行编辑,加上创建/更新编辑视图)到已存在的 `vue-app` 项目——适合小型 搜索表样式管理屏幕,而不是大相接工作空间(参见 `vue-workspace-view` 页:1 - 说吧.

```bash
npx nx g @abgov/nx-adsp:vue-admin-crud my-app --name=regions --resource=regions --route=/regions --fields='[{"key":"name","label":"Name"},{"key":"active","label":"Active","type":"checkbox"}]'
```

| 选项 | 需求 | 说明 |
| --- | --- | --- |
| `project` | 对 | 这个 `vue-app` 将视图添加到 |
| `name` | 对 | 视图名称, 例如 . `regions` 生成 `src/views/RegionsListView.vue` 财务报告和审定财务报表 `src/views/RegionsEditView.vue` |
| `resource` | 对 | API 资源路径段——获取 `/api/v1/<resource>` (名单), `/api/v1/<resource>/:id` (一号子弹), `POST /api/v1/<resource>` (创建), `PUT /api/v1/<resource>/:id` (更新) |
| `route` | 对 | 添加到列表路由路径 `router/index.ts`,比如说. `/regions`。编辑/创建的路由被添加为 `` `${route}/:id` `` (访问) `${route}/new` 创建) |
| `fields` | 对 | JSON 字段数组, 按显示/格式顺序 : `{ key, label, type?: "text"|"checkbox", required? }` - JSON字符串(见下文注) |
| `heading` | 没有 | 列表页标题. 视图名称的默认值, 标题大小写 |
| `singularLabel` | 没有 | "创建/"编辑"标题和按钮中使用的 singular 标签 。 默认为 `--heading` (非规则复数的覆盖) |
| `icon` | 没有 | 生成的侧菜单条目的Ioncon名称 。 默认为 `settings`。 。 。 . `goa-work-side-menu-item` 使空项无一 |
| `requiresAuth` | 没有 | 生成的路径是否需要认证 。 默认为 `true` |

* * *

### `vue-intake-view`

添加路由/ 步入向导( E)`Stepper` + 键 `StepErrorSummary`,只读 审查步骤和确认页) `vue-app` 项目。 跨步状态是 服务器-每个步骤PUT/POST `/api/v1/<resource>/:id` 和在山上穿梭 没有客户端的缓存草稿。 每个字段目前都是纯文本输入.

```bash
npx nx g @abgov/nx-adsp:vue-intake-view my-app --name=application --resource=applications --route=/applications --steps='[{"key":"personal-info","label":"Personal information","fields":[{"key":"fullName","label":"Full name"}]}]'
```

| 选项 | 需求 | 说明 |
| --- | --- | --- |
| `project` | 对 | 这个 `vue-app` 将视图添加到 |
| `name` | 对 | 生成视图的基准名称, 例如 . `application` 生成 `<Step>StepView.vue` 每个步骤加 `ApplicationReviewView.vue`编号 :`ApplicationConfirmationView.vue` |
| `resource` | 对 | API资源路径段. 每一步取取/保存 `/api/v1/<resource>/:id`;审查步骤的提交员额 `/api/v1/<resource>/:id/submit` |
| `route` | 对 | 基本路线,例如:. `/applications`步骤 `/applications/:id/<step-key>`附加时 `/review` 财务报告和审定财务报表 `/confirmation`。在 `/applications/new/<first-step-key>` |
| `steps` | 对 | JSON系列步骤,顺序为: `{ key, label, fields: [{ key, label, required? }] }` - JSON字符串(见下文注) |
| `referenceField` | 没有 | 在所提交的记录上填写在确认页上的商业参考资料。 默认为 `reference`; 缺席时返回路由编号 |
| `requiresAuth` | 没有 | 生成的路径是否需要认证 。 默认为 `true` |

* * *

> **关于 JSON 字符串选项的说明`fields`编号 :`columns`编号 :`steps`:** Nx 自己的 CLI 参数强制 支持逗号分隔的原始列表 `array`\- 类型的计划选项,而不是 JSON - 一个 JSON 字符串是唯一幸存下来的 CLI 语法,所以这些选项被声明为 `string` 财务报告和审定财务报表 内部解析。 当程序上引用生成器时, 普通阵列也会起作用 (例如从脚本),绕过CLI完全解析.

## 认证

大多数发电机在生成时称为ADSP API,这需要ADSP访问 符号 。 签字权授予 **[`@abgov/adsp-cli`](https://www.npmjs.com/package/@abgov/adsp-cli)** —— 说 登录一次,其缓存的令牌在生成器运行中重复使用。 没有建立单独的登录 输入此插件.

```bash
# Sign in once. --scope adsp-cli-admin grants the Keycloak-admin capability some
# generators use to provision a service's OAuth client (safe to request without it).
npx @abgov/adsp-cli login --env <dev|test|prod> --tenant "<Your Tenant>" --scope adsp-cli-admin
```

当你运行一个发电机:

-   如果存在有效的缓存令牌,则生成过程不迅速;
-   若为 `ADSP_CLIENT_ID`编号 :`ADSP_CLIENT_SECRET` (CI服务账户——需要) `@abgov/adsp-cli` ^ 1.7.0+和租户的 `adsp-cli-ci` 启用有证书的 Keycloak 客户端 (a) 通过该账户以非互动方式获取新代号,无需登录;
-   否则 **交互式** 运行发射 `adsp login` 为您( OOB 流: 打印授权) URL,尝试打开它,然后提示您粘贴代码 Keycloak 显示——在 Dev Spaces 和 容器; 通过 `--local` 以本地服务器重定向流量代替; a **非交互式** 运行( r)`--no-interactive` / CI) 失败的精确 `adsp login` 命令先运行,或两个 上面的vars 设置代替.

用于引导租户/户使用的发电机旗:

| 旗帜 | 效果 |
| --- | --- |
| `--tenant <name>` | 按租户姓名(匿名查询)决定Keycloak域名 |
| `--tenantRealm <uuid>` | 直接使用域 UUID; 结合 `--tenant` 覆盖已解决的领域 |
| `--accessToken <token>` | 直接提供预先获得的信号(CI/CD),绕过CLI |

没有这些,发电机就让 `adsp login`互动拾取者解决了租户。 别 有房客吗? 那个选手还提供 **\+ 创建新租户** 选择——可用 `dev`编号 :`test` (从来没有) `prod`)的账户,其核心现实作用包括: `beta-tester` 或者说 `tenant-service-admin`,和(除非 `tenant-service-admin`已经没有租户(一个) 每封行政电子邮件). 取出它会引发一个名字 等待新领域完成供给 在继续作为租户登录之前 要求数 `@abgov/adsp-cli` ^1.4.0+ (此插件针) ^ 1.7.0或更后).

## 代理咨询

`express-service`, (中文(简体) ), `react-app`, (中文(简体) ), `angular-app`, (中文(简体) ), `vue-app`,并连接到 ADSP的亲生伴侣 `agent-service` 在基底脚手架之后进行互动、多回合对话 具有可读取和修改关键集成文件的ADSP-意识代理(`main.ts`, (中文(简体) ), `environment.ts`, (中文(简体) ), `events.ts`, (中文(简体) ), `database.ts`基于您提供的描述。 套接字 连接和文件上传立即开始,同时提示要进行这种描述.

这需要租户/承租人与 [认证](https://npmcn.com/package/%40abgov/nx-adsp/#readme-authentication) 以上,加可达 `agent-service` 如果找不到脚手架,或者跑来跑去 是非交互式的 (e)`--no-interactive`,没有TTY,或者 `CI=true`) (中文(简体) ). 直接跳过 `--skipAgent`无论互动关系如何.

> **编码代理符的说明 :** 跳过这个。 它的存在是为了让 _人类_ 描述他们想要建造的东西 给一个单独的远程特工 除了这个描述 你已经有了 实际要求和周围的代码库上下文,即存在谈话来收集—— 直接通过脚手架,而不是通过间接 圆通至一二分,知事少. 过 `--skipAgent` 明确而不是依赖 打开 `--no-interactive` 单独: `--skipAgent` 是生成器级的普通选项检查,而 `--no-interactive`检测基于 argv 检查此插件自己的密码符可能去 在Nx升级时被闷死——皮带和吊带,今天不是真正的行为差异.

## nx-oc 组合

若为 `@abgov/nx-oc` 安装在工作空间,即快速启动发电机(`express-service`, (中文(简体) ), `react-app`, (中文(简体) ), `angular-app`, (中文(简体) ), `dotnet-service`, (中文(简体) ), `react-dotnet`)自动将 OpenShift 部署 YAML 包含在其输出中. 见 [校对:Soup](https://npmcn.com/package/%40abgov/nx-oc/README.md) 详细情况.

## 地方发展

要在本地对工作空间进行插件测试 :

```bash
# 1. Build the plugin
nx run nx-adsp:build

# 2. In a separate test workspace, install from the build output
npm i -D /path/to/nx-tools/dist/packages/nx-adsp

# 3. Run a generator
npx nx g @abgov/nx-adsp:express-service my-service --tenant my-tenant-realm-uuid
```

要在此插件中添加一个新的生成器 :

```bash
nx g @nx/plugin:generator [generatorName] --project nx-adsp
```

## 常见问题

### @abgov/nx-adsp 是什么？

艾伯塔省政府-ADSP应用的Nx插件\.

### 如何安装 @abgov/nx-adsp？

在项目目录运行 npm install @abgov/nx-adsp，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：tslib（^2\.0\.0）、eslint（^8\.0\.0 \|\| ^9\.0\.0 \|\| ^10\.0\.0）、@nx/devkit（^23\.0\.0）、@nx/eslint（^23\.0\.0）、@abgov/nx-oc（^13\.0\.0-0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @abgov/nx-adsp 支持 TypeScript 吗？

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

### @abgov/nx-adsp 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @abgov/nx-adsp 可以商用吗？

@abgov/nx-adsp 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @abgov/nx-adsp 的下载量有多少？

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

### @abgov/nx-adsp 还在维护吗？

最新版本 13\.33\.5 发布于 2026/10/03（1 个月前）；至今共发布 250 个版本，其中过去 12 个月发布了 147 个；首次发布于 2021/03/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

