Astro 编译器
阿斯特罗 走开 + WASM 编译器.
安装
npm install @astrojs/compiler
使用量
变形 .astro 到有效的类型脚本
Astro 编译器可以转换 .astro 用于默认导出 HTML 的 TypeScript 模块的语法.
一些注释.
- 类型脚本有效
.astro语法! 输出代码可能需要额外的后处理步骤来生成有效的JavaScript. .astro文件依赖于已曝光的服务器执行astro/runtime/server/index.js在节点生态系统。 目前其他运行时间需要通过下列途径实现并参考:internalURL- 这是一个疼痛点,我们正在研究修复.
import { transform, type TransformResult } from "@astrojs/compiler";
const result = await transform(source, {
filename: "/Users/astro/Code/project/src/pages/index.astro",
sourcemap: "both",
internalURL: "astro/runtime/server/index.js",
});
解析 .astro 并返回一个 AST
Astro 编译器可以使用 parse 方法.
一些注释.
- 立场数据目前不完整,在某些情况下是不正确的。 我们正在努力!
- A 类
TextNode能够代表两个 HTMLtext和JavaScript/TypeScript源代码. - 这个
@astrojs/compiler/utils切入点曝光walk财务报告和审定财务报表walkAsync函数,可用于穿行 AST 。 这也暴露了is可用作守护的帮助者,用于为每个守护者得出合适的类型node。 。 。 .
import { parse } from "@astrojs/compiler";
import { walk, walkAsync, is } from "@astrojs/compiler/utils";
const result = await parse(source, {
position: false, // defaults to `true`
});
walk(result.ast, (node) => {
// `tag` nodes are `element` | `custom-element` | `component`
if (is.tag(node)) {
console.log(node.name);
}
});
await walkAsync(result.ast, async (node) => {
if (is.tag(node)) {
node.value = await expensiveCalculation(node)
}
});
开发
VSCode / 编码空间
A 类 devcontainer 配置可用 VSCode 的配置 远程开发扩展包 和 GitHub 代码空间.