3

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() {
      ...
    }
  }
}

しかし、それは本当にハッキーに感じます。また、無名関数でも壊れます。何が起こっているのか、さらにはコードについての手がかりをいただければ幸いです..

ありがとうございます✌️

4

0 に答える 0