@architect/inventory

中文文档
6.1.0发布于 2026/01/16Apache-2.0CommonJS构建来源已验证近 30 天下载 623.7万

建筑工程资源计数工具

中文使用文档
文档目录6 节
  1. @architect/inventory
  2. 安装
  3. 使用量
  4. inventory(options[, callback]) → [Promise]
  5. 库存对象
  6. aws-sdk 备注

@architect/inventory

建筑工程资源计数工具

GitHub CI status

库存负责解释一个给定的建筑师项目的配置和形状,验证其设置,并以一致的中间格式代表它.

安装

npm i @architect/inventory

使用量

inventory(options[, callback]) → [Promise]

对照您的项目运行目录 。 必须传递一个可能包含以下参数的选项对象:

  • cwd - 说吧 字符串 - 正在清点的项目的绝对文件路径
  • env - 说吧 布尔 - 查询AWS以下信息,以获取环境变量 testing, (中文(简体) ), staging,以及 production 环境
  • layerValidation - 说吧 布尔 (默认) true- 选择跳过Lambda层验证
  • rawArc - 说吧 字符串 - 用于测试的原始建筑设计项目清单字符串;提供此选项将忽略您的本地清单
  • region - 说吧 字符串 - 设置默认 AWS 区域; 覆盖默认区域, 但被覆盖 AWS_REGION 环境 var

通过 callback,或返回一个 promise 若为 callback 以结果决定.

库存对象

盘点返回包含两个参数的对象: inv (项目清单对象)和 get (一个查询资源的获取器).

inv

盘点对象包含一个项目的全部数据,包括建筑师默认,项目默认,推断资源,从项目和函数级别分层的用户地设置,本地偏好等. 盘点对象应被视为您项目状态的真相来源,不应被直接变异.

以下划线(如:. _arc, (中文(简体) ), _project)表示项目元数据或内部诊断数据;所有其他参数代表用户地项目资源.

在项目清单中, null 值被用作已知值或非用户定义的选项的占位符。 是否存在非null 值可以推断为用户已具体定义了设置。 例如: arc.http: null 可被解释为用户拥有 没有 定义 @http 破烂. 这一规则有一些例外:

  • 少数如果不提供则必须回填的设置
    • 示例 inv.aws.region,则需要 aws-sdk ,如果不定义,将返回填充
  • 推想出别的东西
    • 示例 @static 能够单独定义,而无需任何其它文件,即存在 @http 推断 @static
    • 因此,添加的行为 @http 将必然使 inv.static 无null
  • 生成相关资源的设置
    • 示例: DynamoDB 流可以在 @tables 与 stream true页:1 stream true 作为新的 inv['tables-streams'] 资源,从而创造 inv['tables-streams'] 无null
  • 兰布达 handlerFile 文件路径属性即使文件没有也存在
    • 这跟兰巴达不一样 configFile 文件路径属性, 这将是 null 如果没有文件
    • 这个例外是:由于一些工作流程可能需要计算出的默认处理器路径(例如:运行时) arc create(中文(简体) )

get

您无需使用 get 帮助使用项目库存,但 get 检查资源的存在或寻找具体资源确实容易得多.

这个 get 帮助者的工作方式 : get.{pragma or property}('parameter or name of resource'). (不包含参数或资源名称在多数情况下都会失败. )

实例:

@app
my-app

@http
get /

@events
event
get.app()             // Returns my-app; same as accessing `inv.app`

get.http('get /')     // Returns `get /` resource data
get.http('get /foo')  // Returns undefined
get.http()            // Returns undefined

get.static('folder')  // Returns 'public' (default inferred by existence of @http); same as accessing `inv.app.static`

get.events('event')   // Returns `event` resource data

get.tables('data')    // Returns undefined

aws-sdk 备注

有条件要求库存 aws-sdk 如果与该工具一起使用 env (如:. await inventory({ env: true })) (中文(简体) ). 包括清单的早期版本 aws-sdk 内 peerDependenciesnpm 7 之前不会自动安装 aws-sdk因为建筑师认为你已经 aws-sdk 或者如果你在Lambda里使用存货 可以在运行时使用.

然而,npm 7(再次)改变了 peerDependencies,现在自动安装全部 peerDependencies (而不是只打印出一个提醒) 这意味着,任何使用清单的Lambdas,如果部署在npm 7的机器上,就会得到一个>50MB依赖有效载荷.

因此,如果 env 设定了参数,以及 aws-sdk 未安装。 我们很遗憾把这个问题变成一个使用地问题,但我们认为这比不必要和隐蔽地造成问题更为可取 aws-sdk 将安装在Lambdas.

版本与发布记录

@architect/inventory 共发布 150 个版本,首次发布于 2020/08/21;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.1.0latest2026/01/169 个月前
6.1.0-RC.1RC2026/01/099 个月前
6.1.0-RC.02026/01/099 个月前
6.0.02025/11/2811 个月前
6.0.0-RC.02025/11/2611 个月前
5.0.02025/09/251.1 年前

关于 @architect/inventory 的常见问题

@architect/inventory 是什么?

建筑工程资源计数工具

如何安装 @architect/inventory?

在项目目录运行 npm install @architect/inventory,或使用 pnpm add / yarn add / bun add。

@architect/inventory 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/architect__inventory 是否存在。

@architect/inventory 支持 ESM 还是 CommonJS?

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

@architect/inventory 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@architect/inventory 可以商用吗?

@architect/inventory 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@architect/inventory 的下载量有多少?

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

@architect/inventory 还在维护吗?

最新版本 6.1.0 发布于 2026/01/16(9 个月前);至今共发布 150 个版本,其中过去 12 个月发布了 5 个;首次发布于 2020/08/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。