我想serverless.yml在不同的环境中重用我的(dev,test,prod).
在配置中我有:
provider:
name: aws
stage: ${opt:stage, 'dev'}
environment:
NODE_ENV: ${self:provider.stage}
Run Code Online (Sandbox Code Playgroud)
现在价值将是dev,test或prod(全部为小写).
有没有办法将它转换为UpCase()的方式,输入和self:provider:stage将保持原样(即小写),但NODE_ENV的值将是大写?
das*_*mug 12
AFAIK,在YAML中没有这样的功能.
通过使用小写和大写名称之间的映射,您可以实现所需的功能.
custom:
environments:
dev: DEV
test: TEST
prod: PROD
provider:
name: aws
stage: ${opt:stage, 'dev'}
environment:
NODE_ENV: ${self:custom.environments.${self:provider.stage}}
Run Code Online (Sandbox Code Playgroud)
您可以使用提供的javascript 文件功能中的引用变量来实现此效果。
以您的示例为例,这应该可行(假设您在支持现代语法的 node.js 环境中运行)
无服务器.yml
...
provider:
name: aws
stage: ${opt:stage, 'dev'}
environment:
NODE_ENV: ${file(./yml-helpers.js):provider.stage.uppercase}
...
Run Code Online (Sandbox Code Playgroud)
yml-helpers.js(与serverless.yml相邻)
...
provider:
name: aws
stage: ${opt:stage, 'dev'}
environment:
NODE_ENV: ${file(./yml-helpers.js):provider.stage.uppercase}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |