2017-11-16 20 views
6

Tôi cố gắng thực hiện webpack tree-shaking xóa không sử dụng babel-polyfill.Webpack có thể lắc cây loại bỏ các polyfill không sử dụng không?

index.js tập tin chứa:

import 'babel-polyfill' 
const add4 = n => n + 4 
const add5 = n => n + 5 
add4(6) 

console.log('boom', add4(4)) 

Trong tập tin này không có mã yêu cầu bất kỳ es2015 + polyfill, vì vậy tôi mong đợi cây lắc để loại bỏ các không sử dụng babel-polyfills trong đầu ra kèm. Nó không phải là trường hợp, và các gói vẫn còn chứa chúng (minified).

Here is a git repo with this code.

Các webpack config:

const MinifyPlugin = require('babel-minify-webpack-plugin') 

module.exports = { 
    entry: './index.js', 
    output: { 
    filename: 'bundle-webpack.js' 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules/, 
     use: { 
      loader: 'babel-loader' 
     } 
     } 
    ] 
    }, 
    plugins: [ 
    new MinifyPlugin({ mangle: { topLevel: true } }, { comments: false }) 
    ] 
} 

.babelrc:

{ 
    "presets": [ 
    [ 
     "env", 
     { 
     "targets": { 
      "browsers": ["chrome >= 50", "iOS >= 10", "ie >= 8"] 
     }, 
     "useBuiltIns": true, 
     "modules": false, 
     "loose": true 
     } 
    ] 
    ] 
} 

tôi đã cố gắng để thay thế với uglifyjs-webpack-plugin, nhưng nó đã cho kết quả tương tự.

Làm cách nào để có thể thực hiện công việc lắc lư, và đầu ra không chứa bất kỳ babel-polyfills nào không được sử dụng trong mã gốc?

Trả lời

1

Bây giờ tôi nhận ra rằng babel-polyfill đổi phạm vi toàn cầu, nơi cây lắc có thể không có tác dụng ...

Đây là một câu hỏi ngu ngốc:)

Các vấn đề liên quan