Lý
Khi transpiling mã của bạn, Babel sẽ thực sự tiêm những người giúp đỡ để bắt chước các tính năng không được hỗ trợ bởi phiên bản ES bạn nhắm mục tiêu.
Ví dụ: class MyClass {}
tận dụng trợ giúp nội tuyến _classCallCheck
, bạn cũng có thể truy cập thông qua require('babel-runtime/helpers/classCallCheck')
.
Theo mặc định, những người trợ giúp không được chia sẻ giữa các đơn vị biên dịch (tệp). Nhóm Babel mặc dù có thể thú vị khi quyết định chúng ở một nơi, cho phép tiết kiệm không gian khi chúng được sử dụng nhiều lần.
Sự cố này đã được giải quyết bằng cách tạo plugin babel-plugin-transform-runtime
, đi bộ AST và thay thế các đoạn trợ giúp theo yêu cầu thích hợp của mô-đun babel-runtime
. Bằng cách đó, những người giúp đỡ được chia sẻ trên codebase và tránh trùng lặp.
Làm thế nào để sử dụng nó
Giả sử bạn có một running Babel environment:
- Install
babel-plugin-transform-runtime
(như là một devDependency
), mà biến đổi mã của bạn để loại bỏ các người giúp đỡ và sử dụng những người thân trong babel-runtime
. Bạn cần phải thêm nó vào plugins
mảng của cấu hình Babel của bạn
- Install
babel-runtime
(như là một dependency
), là thư viện thực tế babel-plugin-transform-runtime
giả sử bạn sẽ có trong dependencies
của bạn, nó sẽ được sử dụng bởi mã transpiled của bạn trong thời gian chạy. Bạn không cần phải yêu cầu nó ở bất cứ nơi nào trong mã của bạn.
Minimal đoạn
npm run build
biên dịch thư mục lib
vào dist
npm start
bắt đầu dist
thư mục (mà phụ thuộc vào babel-runtime
)
package.json
{
"scripts": {
"build": "babel lib --out-dir=dist",
"start": "node dist"
},
"dependencies": {
"babel-runtime": "^6.9.2"
},
"devDependencies": {
"babel-cli": "^6.10.1",
"babel-plugin-transform-runtime": "^6.9.0"
},
"babel": {
"plugins": [
"transform-runtime"
]
}
}
Sau đó, sự khác biệt giữa gói plugin 'chuyển đổi-thời gian chạy' và gói 'thời gian chờ' là gì? Làm thế nào tôi có thể xác minh rằng điều này đang hoạt động? – cosmosb