rollup/rollup-plugin-babel

intergration with babel 7 and preset-env

danrossi opened this issue · 12 comments

I only just upgraded my versions and had to figure out how to integrate the preset-env. I've set a target but it seems to still be polyfilling classes. Is this correct ?

babel({
                            externalHelpers: false,
                            exclude: './node_modules/**',
                            "presets": [
                                [
                                  "@babel/preset-env",
                                  {
                                    modules: false,
                                    "targets": {
                                        "browsers": ["last 2 versions"]
                                    }
                                  }
                                ]
                              ]
           
                        }),

Is anyone looking at this?

You can pass the debug: true option to preset-env and it will explain why it is transpiling things

@nicolo-ribaudo Tried the option. Seems, like the option ie 6 is caught from .babelrc, but output is also full of arrow and async functions etc.

I'm experiencing this as well. When I output the debug information, it says it's using a completely different list of browser targets than what I specify.

@alexmacarthur could you prepare a repro case?

@lovemegowin Could you describe the issue in more detail? What is the actual result? What is the expected result?

@Andarist Thanks for you reply . Here is my rollup config

// rollup.config.js
import babel from 'rollup-plugin-babel';
import nodeResolve from 'rollup-plugin-node-resolve';
import typescript from 'rollup-plugin-typescript'
import json from 'rollup-plugin-json';
import commonjs from 'rollup-plugin-commonjs';

const outputTypes = [
  { file: './es/index.js', format: 'es' },
  { file: './lib/index.js', format: 'cjs' },
];

export default outputTypes.map(output => (
  {
    input: 'src/index.ts',
    output,
    plugins:[
      json(),
      nodeResolve({
        browser: true
      }),
      commonjs({
        namedExports: { 'react': ['createElement', 'Component' ] }
      }),
      typescript(),
      babel({
        babelrc: false,
        presets: [
          [
            "@babel/preset-env",
            {
              "targets": {
                "browsers":  [
                  "last 1 version",
                  "> 1%",
                  "IE 6"
                ]
              },
              "loose": true,
              "modules": false,
              "useBuiltIns": false,
              debug: true
            }
          ],
          "@babel/preset-react",
          "@babel/preset-typescript"
        ]
      }),
    ],
    external: ['antd','react','react-dom'],
  }
))

Arrow function cannot be transform when i set target for IE6 , in spite of debug log is use transform plugin

That's because you don't configure Babel to transpile .ts filed. You need to make use of extensions option passed to rollup-plugin-babel.

@Andarist Thank you ! This is the right way to resolve my confuse .

I had the same issue and was able to get it working with a simple string, not sure why.

      presets: [
        [
          "@babel/preset-env",
          {
            targets: "defaults, ie >= 11",
            debug: true,
          }
        ],
      ],

i got it working using this guide: https://blog.az.sg/posts/svelte-and-ie11/