0

演示

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

运行缩小死代码消除

输出:

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版本没有问题

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

4

0 回答 0