【问题标题】:Babel plugin addComment doesn't work when ran with codemod使用 codemod 运行时,Babel 插件 addComment 不起作用
【发布时间】:2021-08-01 01:06:12
【问题描述】:

我已经创建了一个 babel 插件:

    module.exports = function (babel) {
        const { types: t } = babel;
        return {
            name: 'addComment',
            visitor: {
                Program(path, state) {
                    path.addComment('leading', '@@@ My precious @@@');
                    path.unshiftContainer('body', t.noop());
                }
            }
        };
    }

我希望它应该在模块顶部添加注释行// @@@ My precious @@@,并在注释后添加一个空白行。

我用@codemod/cli 运行了这个插件:

./node_modules/.bin/codemod --plugin ./babel-plugin.js ./transform-me.js

我在源文件中只插入了一个空行,没有注释行。 如果我在 astexplorer.net 中尝试相同的代码,它可以正常工作。

我尝试使用 "cmets": true 选项添加 .babelrc 文件并使用 --find-babel-config 参数运行 codemod。同样的结果。

我做错了什么?

【问题讨论】:

    标签: babeljs babel-plugin codemod


    【解决方案1】:

    我找到了一个决定。如果我直接操作 cmets 数组,则插入 cmets:

    function addComment(path, comment) {
        const rootNode = path.node.body[0];
        if (!rootNode.comments) {
          rootNode.comments = [];
        }
    
        rootNode.comments.push({
            leading: true,
            trailing: false,
            value: comment,
            type: 'CommentLine'
        });
    }
    
    path.addComment('leading', 'my comment') -> addComment(path, 'my comment')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 2019-08-06
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多