HCL2JSON (美国)
这是WebAssembly的包装 https://github.com/tmccombs/hcl2json (中文(简体) )
使用量
yarn add @cdktf/hcl2json
解析 HCL 字符串
import { parse } from '@cdktf/hcl2json'
const hcl = `
variable "name" {
description = "Name to be used on all the resources as identifier"
type = string
default = ""
}
`
(async () => {
// my-filename.tf isn't relevant for the functionality, just metadata
const json = await parse('my-filename.tf', hcl)
console.log(json)
})()
// =>
{
"variable": {
"name": [
{
"default": "",
"description": "Name to be used on all the resources as identifier",
"type": "${string}"
}
]
}
}
解析整个目录
import { convertFiles } from "@cdktf/hcl2json";
(async () => {
const json = await convertFiles("/your/terraform/code");
console.log(json);
})();
// => Unified JSON representation of all *.tf and *.tf.json files in the given directory
解析表达式
import { getReferencesInExpression } from "@cdktf/hcl2json";
(async () => {
const variables = await getReferencesInExpression(
"main.tf",
"This is a ${var.input} embedded",
);
console.log(variables);
})();
// => [{ value: "var.input", startPosition: 12, endPosition: 23 }]
发展
与 yarn build 启动 Typescript 编译,并实现带有 WASM 目标的 Go 构建 .