@architect/inventory
建筑工程资源计数工具
库存负责解释一个给定的建筑师项目的配置和形状,验证其设置,并以一致的中间格式代表它.
安装
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页:1stream true作为新的inv['tables-streams']资源,从而创造inv['tables-streams']无null
- 示例: DynamoDB 流可以在
- 兰布达
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.
