您要么必须将所有变量放在外部文件中,要么每次从自定义文件中导入每个变量{file(../config.yml):foo}
但是...您也可以使用 js 代替 yml/json 并创建一个serverless.js
文件,以便在需要更多功能时以编程方式构建文件。我对我的东西有相当复杂的需求,并且有大约 10 个用于所有不同服务的 yml 文件。对于我的离线 sls,我需要添加额外的东西,修改其他一些东西,所以我只需使用节点读取 yaml 文件,将它们解析为 json 并构建我需要的内容,然后将其导出。
这是加载多个配置并导出合并的配置的示例:
import { readFileSync } from 'fs'
import yaml from 'yaml-cfn'
import merge from 'deepmerge'
const { yamlParse } = yaml
const root = './' // wherever the config reside
// List of yml to read
const files = [
'lambdas',
'databases',
'whatever'
]
// A function to load them all
const getConfigs = () =>
files.map((file) =>
yamlParse(readFileSync(resolve(root, `${file}.yml`), 'utf8'))
)
// A function to merge together - you would want to adjust this - this uses deepmerge package which has options
const mergeConfigs = (configs) => merge.all(configs)
// No load and merge into one
const combined = mergeConfigs(getConfigs())
// Do stuff... maybe add some vars just for offline for ex
// Export - sls will pick that up
export default combined