演示
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版本没有问题
那么结论是第二个插件没能拿到前一个插件执行的代码?请解释