Nota: ho trovato questa domanda su Babel issue tracker (https://phabricator.babeljs.io/T2653) ed è stata rifiutata, ma AFAIK il suo autore non l'ha chiesto qui.Babel v6: Come/Posso scrivere un plug-in che aggiunge una nuova sintassi (ovvero un nuovo operatore)?
Ho controllato i plugin Babel come packages/babel-plugin-syntax-do-expressions e sembrava che questi ES6 + nuova sintassi/gli operatori non sono stati effettivamente definiti nel plugin a tutti, ma essendo implemented in Babylon e semplicemente essere toggled on da questi plugin.
Lasciando il reclamo nello newest blog post che "Gli sviluppatori hanno costruito tutto dagli strumenti di debug [...] alle nuove sintassi sperimentali [...] per applicare regole complesse sui loro codebase" dubbioso - in realtà, ho cercato il intero ecosistema di plug-in, ma non ha trovato alcun plug-in in grado di offrire nuovi operatori/sintassi e solo un plug-in in grado di offrire un sovraccarico dell'operatore per alcuni operatori esistenti.
Quindi, è proprio vero che con Babel v6 saremo in grado di vedere i nuovi operatori/sintassi in fase di definizione nel campo utente e come?
Questa è anche l'occasione per ringraziare l'intero team Babel per il buon lavoro svolto!
PS: Ho iniziato a cercare come estendere la sintassi del parser di Babylon al fine di implementare un plugin che implementasse la "corrispondenza del modello" come in Julia methods.
Ho la stessa domanda, ma sono riuscito a far funzionare un plug-in di sintassi senza aver hackerato alcun file di base. È un plug-in per [DCI] (http://fulloo.info/) ed è ancora in sviluppo, ma [TransferMoney.js] (https://github.com/mbrowne/babel-dci/blob/master/babel- il file di esempio plugin-transform-dci/examples/TransferMoney/TransferMoney.js) viene analizzato correttamente: https://github.com/mbrowne/babel-dci. Il modo in cui ho importato la libreria 'babylon' sembra però fragile; speriamo che ci sia un modo migliore/più ufficiale per farlo. Probabilmente seguirò la community Slack ... –
Nota che per poter funzionare, devi prendere l'istanza di 'babylon' usata dal parser attualmente caricato ... quindi non puoi farlo 'npm install babylon' all'interno della cartella del plugin - che caricarebbe una copia separata di babylon. Ecco perché l'ho importato come 'babel-cli/node_modules/babel-core/node_modules/babylon/...'. –
Si noti che il team Babel non ha ancora reso pubblica l'API del plug-in del parser, quindi tutto ciò è soggetto a modifiche comunque. Sono sicuro che ci sarà un modo migliore per scrivere plug-in parser in futuro. –