哇?。。?!我仔仔細細的看了 webpack > v4.16.0 > 文檔 > 指南 > Tree Shaking 中對于sideEffects的介紹,不管是按他文檔表面的意思還是結(jié)合上下文來看 sideEffects這個屬性都好像是用來裁剪未引入的代碼(就是文中提示的死代碼),比如下面://index.js (這是node_modules 下 myplugin模塊,他包含index.js 和 package.json)function a(){'is a'};function b(){'is b'};export {a , b};//package.json{ "name":'myplugin', "sideEffects":false}//main.jsimport {a} from 'myplugin';
a();當打包后 按理輸出代碼中不再包含 b函數(shù)的相關(guān)代碼, 但是"sideEffects":false并沒有什么卵用,還是所有代碼都被打包,反而如果想去掉b代碼,只要 mode: "development" 就行!所以。。。。。。這sideEffects到底是個啥玩意?到底有啥用?到底什么場景用?還有就是這玩意要設(shè)置在模塊的package.json中,并且webpack文檔也說這是個庫級設(shè)置,那是不是這玩意只能由模塊的作者來設(shè)置?我們設(shè)置也沒啥卵用,重裝模塊就沒了! 哇,困惑啊。。。。。
2 回答

瀟瀟雨雨
TA貢獻1833條經(jīng)驗 獲得超4個贊
個人愚見:"sideEffects":false只是告訴webpack找到了沒有用到的b代碼,真正要在bundle中刪除,其實要使用“UglifyJSPlugin”,用mode:"production"是能夠“激活”UglifyJSPlugin的,他的下一小節(jié)minify the output有講
如果想去掉b代碼,只要 mode: "development" 就行
不知道這個是著呢么搞出來的

拉莫斯之舞
TA貢獻1820條經(jīng)驗 獲得超10個贊
sideEffects
是說模塊內(nèi)有沒有立即執(zhí)行的代碼, 此類代碼通常會產(chǎn)生副作用. 比如:
// a.js 文件// 副作用, 在 import a 時發(fā)生document.body.appendChild(document.createElement('div')); // 導(dǎo)出的模塊export default function foo() {};
通過 sideEffects
標記, 可以通知 webpack
使用一種更簡便高效的方式來實現(xiàn)代碼裁剪.
- 2 回答
- 0 關(guān)注
- 1681 瀏覽
添加回答
舉報
0/150
提交
取消