Chúng ta có cần kết hợp biến đổi-runtime và preset-env trong một ứng dụng không?


8

Câu hỏi 1

Tôi thấy rằng có nhiều sự trùng lặp không cần thiết trong kết quả (đầu ra) gói (webpack), cụ thể, tất cả chúng đều là những người trợ giúp (như classCheck, objectSpread(do plugin phân tán đối tượng).

Vì vậy, tôi muốn giảm sự trùng lặp. Nếu đó là một thư viện, chắc chắn, tôi sẽ sử dụng plugin chuyển đổi thời gian chạy (tham khảo runtime-corejs3) để làm điều này. Nhưng bây giờ đây là một ứng dụng , vậy, cách chính xác để làm điều này là gì?

Do tôi bị nhầm lẫn vì transfrom-runtimeplugin được khuyến cáo cho thư viện (và là cho cả giảm. Ví dụ core-js, regeneratorvà những người giúp việc). Nhưng ở đây tôi chỉ muốn giảm bớt helper sự trùng lặp, không phải người khác trùng lặp vì đó đã được thực hiện bởi babel/env.

Vì vậy, ở đây câu hỏi tôi muốn hỏi / thảo luận là có cần thiết phải giảm sự helperstrùng lặp trong một ứng dụng , nếu có, và làm thế nào?

Câu hỏi 2

Câu hỏi còn lại là, core-js/modules/es.promise.jscore-js-pure/modules/es.promise.jschính xác là cùng một mã, sự khác biệt chính là cái trước đây có gây ô nhiễm toàn cầu không? Nếu vậy, tại sao core-jskhông sử dụng (nhập trực tiếp) core-js-purevào polyfill và sau đó thêm nó vào toàn cầu? IMO, điều này sẽ làm giảm đáng kể sự trùng lặp vì hiện tại các lib sử dụng transform-runtime(cuối cùng core-js-pure) nhưng các ứng dụng sử dụng preset-env(cuối cùng core-js), không có mã chia sẻ / chia sẻ giữa ứng dụng và lib, phải không?


cuối cùng vẫn chưa rõ bạn muốn đạt được điều gì
Leonardo

@Leonardo "có cần thiết phải giảm các bản sao của người trợ giúp trong một ứng dụng không, nếu có, và bằng cách nào?"
SmallTown NE

Là cây rung được kích hoạt trong webpack? [ webpack.js.org/guides/tree-shaking/]
Varun Goel

@VarunGoel Tôi nghĩ rằng đây không phải là về sự rung chuyển của cây vì đó là về sự trùng lặp, không được sử dụng / không được sử dụng
SmallTown NE

Câu trả lời:


0

@babel/plugin-transform-runtime: thêm các polyfill mà không đưa chúng vào phạm vi toàn cầu.

@babel/preset-envvới useBuiltins: "usage": thêm polyfill vào phạm vi toàn cầu.

@babel/preset-envvới useBuiltIns: false (default): Đừng thêm polyfill.

Vì vậy, @babel/plugin-transform-runtimeđược khuyến nghị cho cả thư việnứng dụng để thêm polyfill.

babel.config.js:

module.exports = {
  presets: ['@babel/preset-env'],
  plugins: [
    '@babel/transform-runtime',
  ],
};
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.