Babel.js 写巴别塔插件,访问后如何修改代码?

idv4meu8  于 2022-12-08  发布在  Babel
关注(0)|答案(1)|浏览(177)
export default function({ types: t }) {
  return {
    pre(state) {
      this.allString = '';
    },
    visitor: {
      StringLiteral(path) {
        this.allString += path.node.value;
      }
    },
    post(state) {
      // It does not work
      state.code = `const allString = '${this.allString}'\n` + state.code;
    }
  };
}

例如,我想添加一个变量,其中包含所有字符串的代码,有可能是由一个插件?

rryofs0p

rryofs0p1#

已完成

post(state) {
  state.ast.program.body.push(t.variableDeclaration('const', [
    t.variableDeclarator(t.identifier('allString'), t.stringLiteral(this.allString))
  ]));
}

相关问题