Babel を使用して JS 構成オブジェクトを更新しようとしています。このために、次のように使用される 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 として返す関数を呼び出します。私は何とか関数に対してそれを機能させることができましたが、関数を処理するためのより良い方法を探しています-それらが匿名であるか、矢印関数などであるかどうか.
現在の「ASTへの関数」関数
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() {
...
}
}
}
しかし、それは本当にハッキーに感じます。また、無名関数でも壊れます。何が起こっているのか、さらにはコードについての手がかりをいただければ幸いです..
ありがとうございます✌️