@abgov/nx-adsp

中文文档
13.33.5发布于 2026/10/03Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 2403

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

中文使用文档
文档目录22 节
  1. 先决条件
  2. 安装
  3. 快速启动
  4. 全速启动( PEVN ~ sandbox)
  5. 发电机
  6. init
  7. express-service
  8. react-app
  9. angular-app
  10. vue-app
  11. dotnet-service
  12. react-dotnet
  13. react-form
  14. react-task-list
  15. vue-detail-view
  16. vue-workspace-view
  17. vue-admin-crud
  18. vue-intake-view
  19. 认证
  20. 代理咨询
  21. nx-oc 组合
  22. 地方发展

@abgov/nx-adsp

Nx 拖放插件 高级秘书处 向艾伯塔省政府提出申请.

该插件为节点/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 工作空间中的项目

安装

npm i -D @abgov/nx-adsp

快速启动

# 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 看到了吗 代理咨询 因为你为什么想要,不只是 怎么样? 以下命令已经遵循此命令 .

# 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 给沙盒 部署细节.

发电机

init

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

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后端服务 .

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。 。 。 .

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。 。 。 .

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。 。 。 .

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。 。 。 .

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。 。 。 .

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

接受与 dotnet-service。 。 。 .


react-form

添加由已有的 Resact 组件 ADSP 表格定义 用于现有项目。 生成器从 ADSP Form 服务中获取目标环境的表格定义.

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 任务队列 用于现有项目.

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

接受与 react-form。 。 。 .


vue-detail-view

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

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 模式组件.

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 - 说吧.

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 和在山上穿梭 没有客户端的缓存草稿。 每个字段目前都是纯文本输入.

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 —— 说 登录一次,其缓存的令牌在生成器运行中重复使用。 没有建立单独的登录 输入此插件.

# 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基于您提供的描述。 套接字 连接和文件上传立即开始,同时提示要进行这种描述.

这需要租户/承租人与 认证 以上,加可达 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 详细情况.

地方发展

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

# 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

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

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

版本与发布记录

@abgov/nx-adsp 共发布 250 个版本,首次发布于 2021/03/30;过去 12 个月发布了 147 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
13.33.5latest2026/10/031 个月前
13.33.42026/09/241 个月前
13.33.32026/09/111 个月前
13.33.22026/09/111 个月前
13.33.12026/09/101 个月前
13.33.02026/09/042 个月前

其他发布通道:beta → 13.18.0-beta.12。

关于 @abgov/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 和提交记录判断。