-
-
Notifications
You must be signed in to change notification settings - Fork 64
Open
Description
Hi guys! Thank you for all your great work here, I really think babel-polyfills is the good path to follow. It just took me some time to find it.
Yesterday I started the migration in one library from a @babel/preset-env/@babel/plugin-transform-runtime setup. I carefully read all your notes and some of the source code involved, however, I wrote down some doubts that I would like to clarify before making my changes definitive.
Considering the following situation:
| BEFORE | AFTER |
|---|---|
{
"presets": [
["@babel/preset-env", {
"spec": true,
"modules": false,
"targets": "...",
"ignoreBrowserslistConfig": true
}]
],
"plugins": [
["@babel/transform-runtime", {
"version": "^7.17.9",
"corejs": { "version": 3, "proposals": true },
"useESModules": true
}]
]
} |
{
"targets": "...",
"browserslistConfigFile": false,
"presets": [
["@babel/preset-env", {
"spec": true,
"modules": false,
"ignoreBrowserslistConfig": true
}]
],
"plugins": [
["@babel/transform-runtime", {
"version": "^7.17.9",
}],
["polyfill-corejs3", {
"method": "usage-pure"
}]
]
} |
(Having @babel/runtime as a runtime dependency and @babel/preset-env, @babel/plugin-transform-runtime and babel-plugin-polyfill-corejs3 as development dependencies, after migration.)
The following doubts arise:
- Will
@babel/runtimehelpers be transpiled/polyfilled? Since we are not referencing them from the corejs source anymore (@babel/runtime-corejs3). For example, if@babel/runtime/helpers/asyncToGeneratoris used, willPromisebe polyfilled inside it? (Without polluting the global scope). (Maybe this could be a problem because I think it is not possible anymore to disable general polyfills in@babel/plugin-transform-runtimewhile still importing helpers from@babel/runtime-corejs3.) - With
babel-plugin-polyfill-corejs3, is it possible to use a specific version ofcore-js? (like3.18.1). Should/can we addcore-js-pure(or other flavor) as a runtime dependency explicitly in our library? - Can proposals be 'opt-in', like with
proposalsoption in@babel/plugin-transform-runtime? - Will ES6 modules always be used? How does the plugin decide when to use ES6 or CJS?
- Is this new system beta? Can it be reliably used in critical projects? With proper testing, etc.
Hope I am not missing or confusing anything. I would really appreciate any insights.
Thank you again!
nyngwang
Metadata
Metadata
Assignees
Labels
No labels