有babel插件的订单吗?为什么插件无法得到预插件执行的结果

问题描述

演示

babel.config.js

module.exports = {
  plugins: [
      "minify-dead-code-elimination",[path.resolve(__dirname,'plugin/my-plguin.js'),{ libraryName: ['subApp']}]
  ]
};

src/index.js

import strA from 'a';
console.log('index')
if(false){
   console.log(strA)
}

src/a.js

const vara = 'vara';
export default vara

运行 minify-dead-code-elimination

输出

import strA from 'a';
console.log('index')

在我的插件

Identifier(path) {
    const { name } = path.node
    name === 'strAs' && console.log(path.node)
  }

控制台

Node {
  type: 'Identifier',start: 70,end: 74,loc: SourceLocation {
    start: Position { line: 4,column: 16 },end: Position { line: 4,column: 20 },filename: undefined,identifierName: 'strA'
  },range: undefined,leadingComments: undefined,trailingComments: undefined,innerComments: undefined,extra: undefined,name: 'strA'
}

神奇的是,我的插件console.log显示我得到了应该被“minify-dead-code-elimination”删除的第四行。

无论是单独运行“minify-dead-code-elimination”,还是结合我的插件输出都可以删除if (false)代码块。所以不是babel版本的问题

那么结论是第二个插件没能拿到前一个插件执行的代码?请解释

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)