簡體   English   中英

為babel 6編寫語法插件

[英]Writing a syntax plugin for babel 6

我最近發布了一個提議來討論我的想法。 現在我想嘗試編寫一個可以做到這一點的babel插件。

簡短版本,我想做/支持這個:

import { x, y, z } as myLib from 'lib';

我認為我需要改變 - 或覆蓋甚至 - es2015babel類型

我沒有找到關於babel的defineType工作或當前ImportDeclaration實現如何工作的大量文檔或有用的帖子。

有人可以指點一下babel-type系統是如何工作的,特別是與ImportDeclaration

這個存儲庫似乎正在構建一個babel語法插件,但使用不同的方法(通過babylon插件)。 這是這樣做的嗎?

看到所有babel自己的語法插件只是空殼,在其他地方切換某些行為,這有點令人困惑: babel-plugin-syntax-class-properties / src / index.js

巴別塔和巴比倫是驚人的,我要向那些正在實現它的人們致以誠摯的謝意!

不幸的是,Babel / Babylon目前不支持任意自定義語法擴展,而且我們目前還沒有對PR尚未達到階段0的非官方語法擴展感興趣。我們確實希望支持那一天,但不明顯如何一旦你到達許多插件正在運行的點,這樣做的方式實際上可以很好地協同工作。

該插件使用非官方API直接進入babylonhttps//github.com/mbrowne/babel-dci/blob/a766680b060ab1aa9601c4c14c5b1e0d514ec314/babel-plugin-syntax-dci/src/babylonPlugin.js#L6

import { types as tt } from "babylon/lib/tokenizer/types";
import Parser from "babylon/lib/parser";

lib文件夾不是公共文件夾,不受支持。 這也是為什么這個插件固定在一個特定的和過時的Babylon版本的原因: https//github.com/mbrowne/babel-dci/blob/master/babel-plugin-syntax-dci/package.json#L11

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM