@architect/utils 
@ architect/ utils 用于 @ architect 框架生态系统。 它为AWS Lambda开发、CLI操作、基础设施管理、AWS证书验证和静态资产指纹用于无服务器应用提供了必不可少的工具.
安装
npm i @architect/utils
API 密码
utils.banner(params)
负责打印标准横幅,显示环境信息,包括app名称,AWS区域,配置,版本,以及当前工作目录等.
参数:
params(对象,可选): 下列属性的配置对象 :inventory(目标,要求): 库存对象@architect/inventorycwd(字符串):当前工作目录(默认为process.cwd()(中文(简体) )disableBanner跳过全部打印横幅version(字符串):要显示的软件包版本字符串(默认为"-")quiet(boolean): 禁用横幅打印
回返情况: undefined
示例
let utils = require('@architect/utils')
let inventory = require('@architect/inventory')
utils.banner({
inventory,
version: 'Architect 1.2.3'
})
环境变量:
ARC_QUIET- 如果真伪, 则禁用打印QUIET- 如果真伪, 则禁用打印AWS_REGION- 如果不在库存中配置AWS区域AWS_PROFILE- 如果不在库存中配置 AWS 配置文件AWS_ACCESS_KEY_ID- 如果设置, 显示“ 通过环境设置” 配置文件
utils.chars
返回终端 UI 打印的适合平台的 CLI 字符 。 为Windows和Unix类系统提供不同的字符集,以确保跨平台的正确显示.
参数: 无( 这是对象, 不是函数)
回返情况: 以下属性的对象 :
buzz(字符串): 进步指标字符 (Unix上的'Q',Windows上的'~')start(字符串):开始指标字符 ("Q"在Unix上,"0"在Windows上)done(字符串):完成指标字符 (Unix上的'',Windows上的''')warn(字符串):警告指示字符 ("在Unix上","!"在Windows上)err(字符串):出错指示字符 ("×"在Unix上,"×"在Windows上)
示例
let utils = require('@architect/utils')
console.log(`${utils.chars.done} Task completed successfully`)
console.log(`${utils.chars.warn} Warning message`)
有关公用事业: 用于 utils.banner() 财务报告和审定财务报表 utils.updater() 用于一致的 CLI 字符显示
utils.checkCreds(params, callback)
通过尝试初始化一个 AWS 客户端来进行基本的 AWS 证书验证. 用于核查在进行AWS操作前是否有有效的AWS证书.
参数:
params(目标,要求): 下列属性的配置对象 :inventory(目标,要求): 库存对象@architect/inventory
callback(功能,可选):节点.js风格的回调功能(err) => {}
回返情况: 保证不提供回调,否则 undefined
示例
let utils = require('@architect/utils')
let inventory = require('@architect/inventory')
// With callback
utils.checkCreds({ inventory }, (err) => {
if (err) console.log('Invalid AWS credentials')
else console.log('AWS credentials are valid')
})
// With promise
try {
await utils.checkCreds({ inventory })
console.log('AWS credentials are valid')
} catch (err) {
console.log('Invalid AWS credentials')
}
utils.deepFrozenCopy(obj)
创建一个对象的深层复制并递归地冻结所有嵌入对象,使整个结构不可变. 大约比基于JSON的深度复制快了2x,同时也提供了不可磨损性.
参数:
obj复制和冻结对象
回返情况: 输入对象的深冻副本
示例
let utils = require('@architect/utils')
let original = {
config: { debug: true },
items: [1, 2, { nested: 'value' }]
}
let frozenCopy = utils.deepFrozenCopy(original)
// frozenCopy is completely immutable
// frozenCopy.config.debug = false // This would throw an error
utils.fingerprint(params, callback)
创建一个 static.json 显示文件,将原始文件名映射到带有内容散列的指纹版本.
参数:
params(目标,要求): 下列属性的配置对象 :inventory(目标,要求): 库存对象@architect/inventoryfingerprint启用指纹( 默认为inventory.inv.static.fingerprint(中文(简体) )ignore(阵列):要忽略的文件模式阵列(默认为inventory.inv.static.ignore(中文(简体) )update(功能):进度报告的更新功能
callback(功能,需要):节点.js风格回调功能(err, manifest) => {}
回返情况: undefined
示例
let utils = require('@architect/utils')
let inventory = require('@architect/inventory')
utils.fingerprint({
inventory,
fingerprint: true
}, (err, manifest) => {
if (err) throw err
console.log('Generated fingerprint manifest:', manifest)
// manifest = { 'app.js': 'app-a1b2c3d4e5.js', ... }
})
环境变量:
- 静态资产设置使用库存配置
有关公用事业: 用途 utils.pathToUnix() 内部用于跨平台路径处理
utils.getLambdaName(fn)
通过应用符合Lambda命名要求(最多64个字符,字母,数字,连字符,并仅下划线)的字符替换来将一个架构师路由路径转换为有效的AWS Lambda函数名.
参数:
fn(字符串):架构器路由(例如"/api/用户/:id")
回返情况: 有效的 AWS Lambda 函数名( 字符串)
示例
let utils = require('@architect/utils')
utils.getLambdaName('/') // Returns: '-index'
utils.getLambdaName('/api/users') // Returns: '-api-users'
utils.getLambdaName('/api/users/:id') // Returns: '-api-users-000id'
utils.getLambdaName('/api/v1.0/users') // Returns: '-api-v1_0-users'
字符转换规则 :
/(根)变成-index-变成_.变成_/变成-\变成-:变成000*变成catchall
有关公用事业: 与 utils.toLogicalID() 用于 CloudFormation 资源命名
utils.pathToUnix(pathString)
将任何文件路径转换为 Unix 风格格式,并将前向斜线作为分隔符。 对跨平台相容性至关重要,尤其是在运行于后鞭为默认路径分隔的Windows上时.
参数:
pathString(字符串):要转换的文件路径
回返情况: 带有向前斜线的Unix 风格路径字符串
示例
let utils = require('@architect/utils')
utils.pathToUnix('C:\\Users\\dev\\project') // Returns: 'C:/Users/dev/project'
utils.pathToUnix('/unix/path/already') // Returns: '/unix/path/already'
utils.pathToUnix('relative\\windows\\path') // Returns: 'relative/windows/path'
有关公用事业: 内部使用 utils.fingerprint() 用于跨平台静态资产处理
utils.toLogicalID(str)
将短写字符串转换成适合CloudFormation逻辑ID的PascalCase格式。 处理特例并确保输出符合CloudFormation命名要求.
参数:
str(字符串):转换为 PascalCase 的字符串
回返情况: 适合 CloudFormation 逻辑标识的 PascalCase 字符串
示例
let utils = require('@architect/utils')
utils.toLogicalID('my-api-function') // Returns: 'MyApiFunction'
utils.toLogicalID('user_profile') // Returns: 'UserProfile'
utils.toLogicalID('get') // Returns: 'GetIndex' (special case)
utils.toLogicalID('api-v1.0') // Returns: 'ApiV10'
有关公用事业: 补充 utils.getLambdaName() aWS 资源命名公约
utils.updater(name, params)
创建标准化进度指标并使用多种输出方法进行记录。 自动尊重建筑师的全球印刷状况和环境变量,以获得一致的CLI经验.
参数:
name(字符串,需要):更新器的标签(如"部署","建设")params(对象,可选): 下列属性的配置对象 :quiet(boolean):手动覆盖全局打印状态logLevel(字符串):设置日志级别("正常","动词","调试")
回返情况: 采用下列方法更新对象:
status(message, ...details)- 打印正态更新start(message)- 启动动画进度指标(简称:update(中文(简体) )done(message)- 以更新(别名:stop(中文(简体) )cancel()- 未更新即取消当前进度指标err(error)- 打印出一个错误(别名:error, (中文(简体) ),fail(中文(简体) )warn(message)- 发出警告(别名:warning(中文(简体) )raw(message)- 在尊重静默模式的同时将消息记录为是get()- 返回当前更新器状态reset()- 重新设置更新状态(别名:clear(中文(简体) )verbose- 动词记录方法debug- 调试记录方法
示例
let utils = require('@architect/utils')
let update = utils.updater('Deploy')
update.start('Deploying application...')
// ... deployment logic ...
update.done('Application deployed successfully')
// With error handling
try {
// ... some operation ...
} catch (err) {
update.err(err)
}
环境变量:
ARC_QUIET- 如果真伪, 则禁用打印QUIET- 如果真伪, 则禁用打印CI- 如果属实, 则禁用某些终端进度动画
有关公用事业: 用途 utils.chars 用于一致的终端字符显示