TL; DR: Czy istnieje sposób określania kolejności uruchamiania wtyczek Babel? W jaki sposób Babel określa tę kolejność? Czy jest jakieś sprecyzowanie, jak to działa, oprócz nurkowania w źródła Babel?Wtyczki Babel działają zgodnie z zamówieniem
Pracuję nad własną wtyczką Babel. Zauważyłem, że kiedy go uruchomię, moja wtyczka jest uruchamiana przed innymi wtyczkami es2015. Na przykład mając kodu, takich jak:
const a =() => 1
i odwiedzającego takich jak:
visitor: {
ArrowFunctionExpression(path) {
console.log('ArrowFunction')
},
FunctionExpression(path) {
console.log('Function')
},
}
mój plugin zauważa ArrowFunction (a nie funkcja). Grałem z rzędu, w którym wtyczki są wymienione w konfiguracji Babel, ale to niczego nie zmienia:
plugins: ['path_to_myplugin', 'transform-es2015-arrow-functions'],
plugins: ['transform-es2015-arrow-functions', 'path_to_myplugin'],
OTOH, to wygląda na to, aby NIE jakoś Dziedzina:
https://phabricator.babeljs.io/T6719
---- EDIT ----
I okazało się, że jeśli pisarz mój gość, co następuje:
ArrowFunctionExpression: {
enter(path) {
console.log('ArrowFunction')
}
},
FunctionExpression: {
exit(path) {
console.log('Function')
}
},
obie funkcje są wywoływane. Wygląda więc na to, że kolejność wykonywania to: myplugin_enter -> other_plugin -> myplugin_exit. Innymi słowy, myplugin wydaje się być przed other_plugin w niektórych wewnętrznych potokach. Główne pytanie pozostaje jednak takie samo - kolejność wtyczek w potoku powinna być określona w jakiś sposób konfigurowalna.
Dzięki, ale nawet przy mojej .babelrc wyłączonej i mojej "kolejce wtyczek", takiej jak 'plugins: ['transform-es2015-arrow-functions', 'path_to_myplugin']', funkcja-transform-es2015-strzałki-funkcja jest oczywiście nazywana jest funkcją wejścia AFTER myplugin. Dlaczego tak jest? Czy istnieje sposób na skonfigurowanie kolejki wtyczek w babel (oprócz radzenia sobie z ustawieniami, które nie są zbyt szczegółowym rodzajem kontroli)? –
Napisałeś też "... i każdą grupę z późniejszymi wtyczkami/ustawieniami wcześniejszymi.". Czy mógłbyś wyjaśnić, co rozumiesz przez "grupę"? –
Mam podobną sytuację. Czy masz inną funkcję odwiedzającego w wyższym zakresie, prawdopodobnie w 'Programie', który wywołuje' path.traverse' z rzeczywistymi odwiedzającymi? Wyobrażam sobie, że zostanie to nazwane jako pierwsze. –