2017-02-09 25 views
7

Webpack sẽ bao gồm tất cả của d3.js trong gói khi làm import { select } from 'd3' như đã thấy trong bundle visualization. vấn đề sau đây có thể được giải quyết bằng cách làm import { select } from 'd3-selection' nhưng điều này đánh bại mục đích của cây tự động lắc nhẹ.Webpack 2 Không Tree Lắc D3.js đúng

Rung cây dường như hoạt động trong các trường hợp đơn giản trên mã không phải thư viện của chúng tôi.

Chúng tôi sử dụng "modules": false trong .babelrc của chúng tôi để giữ lại cú pháp mô-đun và sử dụng 'module' quyết tâm trong webpack.config.js của chúng tôi resolve: { mainFields: ['module', 'browser', 'main'] } để chọn mã mô-đun dựa d3 của. Như bạn có thể thấy, nhập khẩu node_modules/d3/index.js được phân đoạn trong các mô-đun ES6 thay vì một gói trình duyệt nguyên khối hoặc xuất khẩu CommonJS.

Điều này có nên được đăng dưới dạng sự cố trên trang web github của webpack hay tôi đang làm điều gì sai? Đây là sử dụng tất cả các phiên bản mới nhất của các thư viện ([email protected], [email protected], vv)

chỉnh sửa: Có vẻ như thế này có liên quan đến các vấn đề sau:

+0

Chỉ muốn nhận xét rằng tôi đã gặp sự cố tương tự với Webpack 2.2.1 và d3 4.6.0. Cây lắc làm việc cho các thư viện khác. Xin vui lòng bình luận nếu bạn đã tìm thấy bất kỳ giải pháp. – Nicd

+0

Có vẻ như có một plugin webpack mới để xử lý Common JS. Vui lòng xem câu trả lời cập nhật của tôi. – nickytonline

+0

Trong khi lỗi rõ ràng đang được sửa (nếu có thể) tôi sẽ xem xét việc nhập từ một mô-đun cụ thể hơn. Ví dụ. 'import {select} từ 'd3-selection'', hoặc thậm chí' import select from' d3-selection/src/select''. –

Trả lời

1

Việc lắc cây sẽ chỉ hoạt động đối với các mô-đun ES6 vì chúng có thể được phân tích tĩnh. AMD/CommonJS mà rất nhiều libs xuất bản không thể được, đó là lý do tại sao bạn có thể không nhìn thấy bất kỳ cây lắc xảy ra. Vui lòng xem https://advancedweb.hu/2017/02/07/treeshaking

CẬP NHẬT: Có vẻ như một plugin webpack mới có khả năng lắc cây Các mô-đun JS phổ biến, https://github.com/indutny/webpack-common-shake. Xin lưu ý rằng repo nói nó ở dạng alpha.

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