配置 Bicep 环境
Bicep 支持名为 bicepconfig.json
的可选配置文件。 在此文件中,可以添加用于自定义 Bicep 开发体验的值。 此文件已与默认配置文件合并。 有关详细信息,请参阅了解合并过程。 若要自定义配置,请在同一目录中或 Bicep 文件的父目录中创建配置文件。 如果有多个包含 bicepconfig.json
文件的父目录,Bicep 将使用最邻近的父目录中的配置。 有关详细信息,请参阅了解文件解析过程。
要配置 Bicep 扩展设置,请参阅 VS Code 和 Bicep 扩展。
在 Visual Studio Code 中创建配置文件
可以使用任何文本编辑器来创建配置文件。
若要在 Visual Studio Code 中创建 bicepconfig.json
文件,请打开命令面板 ([CTRL/CMD]+[SHIFT]+P),然后选择“Bicep: 创建 Bicep 配置文件”。 有关详细信息,请参阅创建 Bicep 配置文件。
Visual Studio Code 的 Bicep 扩展支持用于 bicepconfig.json
文件的 Intellisense 功能。 使用 Intellisense 发现可用的属性和值。
了解合并过程
bicepconfig.json
文件使用默认配置文件执行自下而上的递归合并过程。 在合并过程中,Bicep 会检查这两个配置中的每个路径。 如果默认配置中不存在路径,则路径及其关联值将添加到最终结果中。 相反,如果默认配置中存在具有不同值的路径,则 bicepconfig.json
中的值会在合并结果中优先。
假设默认配置的定义如下:
{
"cloud": {
...
"credentialPrecedence": [
"AzureCLI",
"AzurePowerShell"
]
},
"moduleAliases": {
"ts": {},
"br": {
"public": {
"registry": "mcr.microsoft.com",
"modulePath": "bicep"
}
}
},
...
}
并且 bicepconfig.json
定义如下:
{
"cloud": {
"credentialPrecedence": [
"AzurePowerShell",
"AzureCLI"
]
},
"moduleAliases": {
"br": {
"ContosoRegistry": {
"registry": "contosoregistry.azurecr.io"
},
"CoreModules": {
"registry": "contosoregistry.azurecr.io",
"modulePath": "bicep/modules/core"
}
}
}
}
生成的合并配置将为:
{
"cloud": {
...
"credentialPrecedence": [
"AzurePowerShell",
"AzureCLI"
]
},
"moduleAliases": {
"ts": {},
"br": {
"public": {
"registry": "mcr.microsoft.com",
"modulePath": "bicep"
},
"ContosoRegistry": {
"registry": "contosoregistry.azurecr.io"
},
"CoreModules": {
"registry": "contosoregistry.azurecr.io",
"modulePath": "bicep/modules/core"
}
}
},
...
}
在前面的示例中,cloud.credentialPrecedence
的值被替换,同时 cloud.moduleAliases.ContosoRegistry
和 cloud.moduleAliases.CoreModules
的值在合并配置中追加。
了解文件解析过程
bicepconfig.json
文件可以放置在 Bicep 文件的同一目录或父目录中。 如果有多个包含 bicepconfig.json
文件的父目录,Bicep 将使用最邻近的父目录中的配置文件。 例如,在给定的文件夹结构中,每个文件夹都有一个 bicepconfig.json
文件:
如果在 child
文件夹中编译 main.bicep
,则会使用 child
文件夹中的 bicepconfig.json
文件。 将忽略 parent
文件夹和 root
文件夹中的配置文件。 如果 child
文件夹不包含配置文件,则 Bicep 会在 parent
文件夹中搜索配置,然后在 root
文件夹中搜索。 如果未在任何文件夹中找到配置文件,则 Bicep 会默认使用默认值。
在调用多个模块的 Bicep 文件的上下文中,每个模块会使用最近的 bicepconfig.json
进行编译。 然后,主 Bicep 文件会通过其对应的 bicepconfig.json
进行编译。 在以下方案中,modA.bicep
使用 A
文件夹中的 bicepconfig.json
进行编译,modB.bicep
使用 B
文件夹中的 bicepconfig.json
进行编译,最后 main.bicep
使用 root
文件夹中的 bicepconfig.json
进行编译。
在 A
和 B
文件夹中没有 bicepconfig.json
文件的情况下,所有三个 Bicep 文件都是使用 root
文件夹中的 bicepconfig.json
进行编译的。 如果 bicepconfig.json
不存在于任何文件夹中,则编译过程会默认使用默认值。
配置 Bicep 模块
使用模块时,可以为模块路径添加别名。 这些别名可简化 Bicep 文件,因为不必重复复杂的路径。 还可以配置云配置文件和凭据优先级,以便从 Bicep CLI 和 Visual Studio Code 对 Azure 进行身份验证。 凭据用于将模块发布到注册表,并在使用 insert 资源函数时将外部模块还原到本地缓存。 有关详细信息,请参阅将模块设置添加到 Bicep 配置中。
配置 Linter 规则
Bicep Linter 会检查 Bicep 文件是否存在语法错误以及是否违反最佳做法。 可以通过修改 bicepconfig.json
来覆盖 Bicep 文件验证的默认设置。 有关详细信息,请参阅将 Linter 设置添加到 Bicep 配置中。
启用实验性功能
可以通过将以下部分添加到 bicepconfig.json
文件来启用实验性功能。 使用试验性功能自动启用语言版本 2.0 代码生成。
下面是启用“assertions”和“testFramework”功能的示例。
{
"experimentalFeaturesEnabled": {
"assertions": true,
"testFramework": true
}
}
有关当前试验性功能集的详细信息,请参阅试验性功能。