Я пытаюсь обновить объект конфигурации JS с помощью Babel. Для этого я создал плагин Babel, который используется следующим образом:
const transform = require('@babel/standalone').transform
const newCode = transform(code, {
plugins: [
[
myBabelPlugin, {
scripts: {
action: 'create:merge',
value: ['path/to/my/script.js']
},
someFunc: {
action: 'create',
function a(arg) { return true; }
}
}
]
]
}).code
Внутренне он вызывает функцию toAst
, которая перебирает литеральные элементы и возвращает их как AST. Мне удалось несколько заставить его работать для функций, но я ищу лучший способ обработки функций - будь то анонимные функции, функции стрелок и т. Д. c.
Current "функция для AST "function
if (typeof elem === 'function') {
const ast = babylon.parse(elem.toString(), {
plugins: [
babelPluginTransformRuntime,
babelPluginTransformArrowFunction
]
})
const { params, body } = ast.program.body[0]
return t.functionExpression(
null,
params,
body
)
}
Причина, по которой я это делаю, заключается в том, что при возврате тела программы будет возвращаться что-то вроде этого:
const config = {
elem: function () {
function myFunction() {
...
}
}
}
Но это выглядит очень странно. Это также нарушает анонимные функции. Любая подсказка о том, что происходит или даже код, будет принята с благодарностью ..
Спасибо 101