【发布时间】:2017-06-28 15:44:43
【问题描述】:
比如说,我想创建一个rot13 模板标签。你可以这样使用它:
let secret = rot13`This is a secret.`;
现在我可以在 JavaScript 中实现这个标签,但我想预先解析它,以便我编译的包实际上包含:
let secret = "Guvf vf n frperg.";
我该怎么做?我是否必须创建一个 Babel 插件才能连接到他们的解析器?那会是什么样子?
现在,如果我希望 Webpack 也输出一个名为 rotated_strings.txt 的文件,其中包含所有这些已转换字符串的列表,该怎么办?我如何收集它们?即,我如何让 Babel 和 Webpack 进行通信,以便 Babel 可以进行内联转换,但以某种方式通知 Webpack 生成这个额外的文件?
【问题讨论】:
-
我不认为 babel 能够为你执行
rot13,它的目的是从一件事转换到另一件事。看看指数转换器插件,它会将x ** y转换为Math.pow(x, y),它实际上并没有预编译:github.com/babel/babel/tree/master/packages/… -
@Xotic750 我知道这是可能的,无论是哪种方式。 Apollo 和 Relay 为
gql执行此操作,我认为有一对为css等执行此操作。 Babel 可以 转换模板标签,我只是想在一个非常具体的标签周围放一些特殊的逻辑。 -
不是很健壮,但这是证明可以做到的起点...astexplorer.net/#/gist/89a6bdce0165d2661385828d9d85a7e0/…
-
实际上你显然想用一个字符串节点替换整个文字,但我不太了解 Babel,我有火车可以赶上:p 希望你/其他人能得到剩下的路。
-
@mpen 你不需要想太多。您需要将该插件包含在您在
.js文件中使用的 Babel (.babelrc) 中。我猜你的所有 js 上都有一个 eslint 和 Babel 加载器
标签: javascript webpack babeljs