J'ai introduit par inadvertance un problème de compatibilité descendante dans mon React app en utilisant Array.prototype.flat
. J'ai été très surpris que cela ne soit pas résolu en transpilant - je pensais que cela entraînerait un code compatible es2015.
Comment puis-je demander à Babel 7 de transpiler cela? (Si ma lecture des sources est correcte dans Babel 6, il y avait encore un plugin pour cela, mais comme cela a commencé à être déployé sur les navigateurs, le support a été abandonné?)
Outils:
Mes fichiers de configuration de niveau supérieur ressemblent à ceci:
var path = require('path')
module.exports = {
entry: "./src/index.js",
output: {
path: path.join(__dirname, 'dist', 'assets'),
filename: "bundle.js",
sourceMapFilename: "bundle.map"
},
devtool: '#source-map',
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules)/,
loader: 'babel-loader'
}
]
}}
{
"presets": [ "@babel/preset-env", "@babel/react" ],
"plugins": [["@babel/plugin-proposal-pipeline-operator", { "proposal": "minimal" }]]
}
chrome 58
ie 11
Voici une note importante: vous ne pouvez pas "le transpiler". Vous pouvez uniquement remplir polyfil.
Pour ce faire, vous pouvez utiliser
L'ensemble du .babelrc est configuré comme ceci
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": 4
},
"useBuiltIns": "usage",
"corejs": 3
}
]
]
}
Vous pouvez également avoir @ babel/polyfill comme dépendance d'exécution dans votre package.json et import "@babel/polyfill"
dans votre code.
Tous les détails dont vous avez besoin sont sur cette page https://babeljs.io/docs/en/babel-polyfill mais il y a beaucoup de subtilité
J'ai créé cet exemple minimal pour démontrer
https://github.com/cmdcolin/babel-array-flat-demo
Après la compilation, vous obtenez des importations appropriées ajoutées à votre fichier https://github.com/cmdcolin/babel-array-flat-demo/blob/master/dist/index.js et cela fonctionne avec les anciennes versions du nœud.