为什么 tree-shaking 会移除具有副作用的代码?

index.js 内容如下:

const bar = () => 11111
function foo(obj) {
  const a = 22222  
  return bar(obj);
}
foo()

webpack.config.js 只设置了 mode:'production',package.json 没有设置 sideEffects: false

按理说,上面这段代码执行的结果没有被用到,应该属于 dead-code,会被 tree-shaking 掉,但是 foo 不是纯函数,具有副作用,所以又不会被 tree-shaking 掉。但是在我查看 bundle 文件的时候,发现确实找不到 foo 函数了(检索 11111 和 22222 没有结果),这是为什么呢?

阅读 2k
1 个回答
// test.js
import React from 'react';
console.log(React);
export const fn = () => {};

// index.js
import {fn} from 'test.js'
fn()

// 用这个测试,体现效果
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题