亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于webpack4 sideEffects到底是什么?

關于webpack4 sideEffects到底是什么?

紫衣仙女 2018-07-17 23:05:54
哇!?。?!我仔仔細細的看了 webpack > v4.16.0 > 文檔 > 指南 > Tree Shaking 中對于sideEffects的介紹,不管是按他文檔表面的意思還是結合上下文來看 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函數的相關代碼, 但是"sideEffects":false并沒有什么卵用,還是所有代碼都被打包,反而如果想去掉b代碼,只要 mode: "development" 就行!所以。。。。。。這sideEffects到底是個啥玩意?到底有啥用?到底什么場景用?還有就是這玩意要設置在模塊的package.json中,并且webpack文檔也說這是個庫級設置,那是不是這玩意只能由模塊的作者來設置?我們設置也沒啥卵用,重裝模塊就沒了! 哇,困惑啊。。。。。
查看完整描述

2 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

個人愚見:"sideEffects":false只是告訴webpack找到了沒有用到的b代碼,真正要在bundle中刪除,其實要使用“UglifyJSPlugin”,用mode:"production"是能夠“激活”UglifyJSPlugin的,他的下一小節minify the output有講

如果想去掉b代碼,只要 mode: "development" 就行
不知道這個是著呢么搞出來的


查看完整回答
反對 回復 2018-07-20
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

sideEffects 是說模塊內有沒有立即執行的代碼, 此類代碼通常會產生副作用. 比如:

// a.js 文件// 副作用, 在 import a 時發生document.body.appendChild(document.createElement('div')); 

// 導出的模塊export default function foo() {};

通過 sideEffects 標記, 可以通知 webpack 使用一種更簡便高效的方式來實現代碼裁剪.


查看完整回答
反對 回復 2018-07-20
  • 2 回答
  • 0 關注
  • 1687 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號