# @architect/inventory 中文文档

规范地址：https://npmcn.com/package/%40architect/inventory/

版本：6\.1\.0
npm 元数据更新时间：2026-03-03T19:04:17.848Z
中文译文更新时间：2026-11-06T14:28:52.137Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：141 kB，77 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：5 个
- 首次发布：2020-08-20T21:41:56.200Z
- 最新版本发布：2026-01-15T17:11:23.396Z
- 近 30 天下载量：6236518（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：150（近 12 个月 5 个）

## 中文简介

建筑工程资源计数工具

## 安装

```sh
npm install @architect/inventory
```

也可以使用：`pnpm add @architect/inventory`、`yarn add @architect/inventory`、`bun add @architect/inventory`

## README

[![](https://assets.arc.codes/architect-logo-500b@2x.png)](https://www.npmjs.com/package/@architect/inventory)

## [`@architect/inventory`](https://www.npmjs.com/package/@architect/inventory)

> 建筑工程资源计数工具

[![GitHub CI status](https://github.com/architect/inventory/workflows/Node%20CI/badge.svg)](https://github.com/architect/inventory/actions?query=workflow%3A%22Node+CI%22)

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

## 安装

```
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')`. (不包含参数或资源名称在多数情况下都会失败. )

实例:

```arc
@app
my-app

@http
get /

@events
event
```

```js
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` 内 `peerDependencies`npm 7 之前不会自动安装 `aws-sdk`因为建筑师认为你已经 `aws-sdk` 或者如果你在Lambda里使用存货 可以在运行时使用.

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

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

## 常见问题

### @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 和提交记录判断。

