爲何要使用 Tree Shaking?
當從某文件模塊中導出(某一個或幾個變量、函數、對象等),然而這個文件模塊還有許多其它(咱們此次並不須要)的導出,webpack會無論三七二十一簡單粗暴的將整個模塊包含進來,使得咱們最終打包的文件裏有了許多不須要的垃圾。這就到了tree shaking出手的地方了,由於它能幫助咱們幹掉那些用不到的代碼,大大減小打包的尺寸。node
// .babelrc { "presets": [ ["@babel/preset-env", { "modules": false } ] ] }
// webpack.config.js module: { rules: [ { test: /\.js$/, exclude: /(node_modules)/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env', { modules: false }] } } } ] }
第二個要求,須要使用UglifyJsPlugin插件。若是在mode:"production"模式,這個插件已經默認添加了,若是在其它模式下,能夠手工添加它。
第三個要求,打開optimization.usedExports
。在mode: "production"
模式下,它也是默認打開了的。它告訴webpack每一個模塊明確使用exports。這樣以後,webpack會在打包文件中添加諸如/* unused harmony export */
這樣的註釋,其後UglifyJsPlugin插件會對這些註釋做出理解。webpack