Browserify transform for Babel

Related tags

Mad science babelify
Overview

babelify Build Status

Babel browserify transform.

As of Babel 6.0.0 there are no plugins included by default. For babelify to be useful, you must also include some presets and/or plugins.

Installation

# Babel 7
$ npm install --save-dev babelify @babel/core

# Babel 6
$ npm install --save-dev babelify@8 babel-core

Usage

CLI

$ browserify script.js -o bundle.js -t [ babelify --presets [ @babel/preset-env @babel/preset-react ] --plugins [ @babel/plugin-transform-class-properties ] ]

Node

var fs = require("fs");
var browserify = require("browserify");
browserify("./script.js")
  .transform("babelify", {presets: ["@babel/preset-env", "@babel/preset-react"]})
  .bundle()
  .pipe(fs.createWriteStream("bundle.js"));

NOTE: Presets and plugins need to be installed as separate modules. For the above examples to work, you'd need to also install @babel/preset-env and @babel/preset-react:

$ npm install --save-dev @babel/preset-env @babel/preset-react

Options

Selected options are discussed below. See the babel docs for the complete list of options.

Options may be passed in via standard browserify ways:

$ browserify -t [ babelify --presets [ @babel/preset-env @babel/preset-react ] ]
browserify().transform("babelify", {presets: ["@babel/preset-env", "@babel/preset-react"]});
var babelify = require("babelify");
browserify().transform(babelify, {presets: ["@babel/preset-env", "@babel/preset-react"]});

Or, with the configure method:

browserify().transform(babelify.configure({
  presets: ["@babel/preset-env", "@babel/preset-react"]
}));

Customizing extensions

By default, all files with the extensions .js, .es, .es6 and .jsx are compiled. You can change this by passing an array of extensions.

NOTE: This will override the default ones so if you want to use any of them you have to add them back.

browserify().transform("babelify", {extensions: [".babel"]});
$ browserify -t [ babelify --extensions .babel ]

Now you can use:

import NavBar from "nav-bar.babel";
var Panels = require("panels.babel");

NOTE: By default, Browserify will only lookup .js and .json files when the extension is omitted (like node's require). To lookup additional extensions, use browserify's extensions option.

browserify({
  extensions: [".babel"]
}).transform("babelify", {
  extensions: [".babel"]
});
$ browserify --extensions=.babel -t [ babelify --extensions .babel ]

Now you can omit the extension and compile .babel files:

import NavBar from "nav-bar";
var Panels = require("panels");

Source maps

By default, browserify sets the source map sources paths relative to the basedir (or to process.cwd() if not set). To make the sources paths absolute, set the sourceMapsAbsolute option on babelify:

browserify().transform("babelify", {
  sourceMapsAbsolute: true
});
$ browserify -t [ babelify --sourceMapsAbsolute ]

Additional options

browserify().transform(babelify.configure({
  // Optional ignore regex - if any filenames **do** match this regex then
  // they aren't compiled
  ignore: /regex/,

  // Optional only regex - if any filenames **don't** match this regex
  // then they aren't compiled
  only: /my_es6_folder/
}))
$ browserify -t [ babelify --ignore regex --only my_es6_folder ]

Babel result (metadata and others)

Babelify emits a babelify event with Babel's full result object as the first argument, and the filename as the second. Browserify doesn't pass-through the events emitted by a transform, so it's necessary to get a reference to the transform instance before you can attach a listener for the event:

var b = browserify().transform(babelify);

b.on("transform", function(tr) {
  if (tr instanceof babelify) {
    tr.once("babelify", function(result, filename) {
      result; // => { code, map, ast, metadata }
    });
  }
});

FAQ

Why aren't files in node_modules being transformed?

This is the default browserify behavior.

A possible solution is to add:

{
  "browserify": {
    "transform": ["babelify"]
  }
}

to the root of all your modules package.json that you want to be transformed. If you'd like to specify options then you can use:

{
  "browserify": {
    "transform": [["babelify", { "presets": ["@babel/preset-env"] }]]
  }
}

Another solution (proceed with caution!) is to run babelify as a global transform. Use the babel ignore option to narrow the number of files transformed:

browserify().transform("babelify", {
  global: true,
  ignore: /\/node_modules\/(?!app\/)/
});

The above example will result in a transform that also includes the app module in node_modules: the global flag transform all files, and the ignore regular expression then excludes all those in the node_modules directory except those that are in node_modules/app (since ?! will match if the given suffix is absent).

Why am I not getting source maps?

To use source maps, enable them in browserify with the debug option:

browserify({debug: true}).transform("babelify");
$ browserify -d -t [ babelify ]

If you want the source maps to be of the post-transpiled code, then leave debug on, but turn off babelify's sourceMaps:

browserify({debug: true}).transform("babelify", {sourceMaps: false});
$ browserify -d -t [ babelify --no-sourceMaps ]
Comments
  • 'import' and 'export' may appear only with 'sourceType: module'

    'import' and 'export' may appear only with 'sourceType: module'

    I switched from [email protected] to [email protected] and at the same time upgraded browserify from 6.3.4 to 10.2.6, watchify from 2.3.0 to 3.2.3 and remapify from 1.4.3 to 2.0.3. Now I get several build errors: 'import' and 'export' may appear only with 'sourceType: module'

    My build file looks more or less like this:

    const browserify = require('browserify');
    const babelify = require('babelify');
    const remapify = require('remapify');
    const watchify = require('watchify');
    
    const b = browserify({
      cache: {},
      packageCache: {},
      fullPaths: false,
      debug: true
    });
    b.add(myFile);
    b.transform(babelify);
    b.plugin(remapify, [...]);
    watchify(b).bundle(function(err, buf) { ... });
    
    opened by maiermic 37
  • Upgrade to Babel 7 and @babel scoped packages

    Upgrade to Babel 7 and @babel scoped packages

    • Change dependencies/require to use @babel scoped packages
    • Use asynchronous babel.transform
    • Replace removed functions/properties: babel.util.arrayify, babel.util.canCompile, result.metadata.usedHelpers
    • Even without sourceFileName, Babel 7 maps source files to absolute path, if sourceMapsAbsolute is false(default), set sourceFileName to its base name
    • Updated test cases

    Fixes #254, fixes #251, fixes #231

    opened by ylemkimon 26
  • Unknown option `base._`

    Unknown option `base._`

    It seems I am not the only one to have the same problem (#125).

    ReferenceError: [BABEL] [..] Unknown option: base._
    [...]
    at OptionManager.mergeOptions (node_modules/babelify/node_modules/babel-core/lib/transformation/file/options/option-manager.js:244:18)
    

    Browserify passes non-option arguments under the _ key of the option object.

    My temporary workaround is to delete it delete opts._; here as it is currently done with other browserify options (_flags, basedir, global).

    opened by Julio-Guerra 25
  • Uncaught ReferenceError: regeneratorRuntime is not defined

    Uncaught ReferenceError: regeneratorRuntime is not defined

    I'm using 6to5ify with {experimental: true} passed to the configure method. Here's a script I'm using to create a bundle:

    var browserify = require('browserify');
    var to5ify = require('6to5ify');
    var brfs = require('brfs');
    var fs = require('fs');
    var path = require('path');
    var uglifyify = require('uglifyify');
    
    var devPath = path.join(__dirname, 'frontend', 'scripts', 'main.js');
    
    browserify()
        .transform(to5ify.configure({experimental: true}))
        .transform(brfs)
        .transform({global: true}, uglifyify)
        .require(devPath, {entry: true})
        .bundle()
        .pipe(fs.createWriteStream(path.join(__dirname, 'build', 'bundle.js')));
    

    When using the bundle, I get the aforementioned error. Is this an issue with the experimental flag?

    opened by qubyte 22
  • Incorrect export when using ES6 export syntax

    Incorrect export when using ES6 export syntax

    Hi,

    I'm currently making the switch to Babel 6 and running into the following problem, which might* be related to babelify.

    Here's my gulp-task:

    let bify = browserify({
        entries    : './src/scripts/main.js',
        standalone : 'basicContext'
    })
    
    let transformer = babelify.configure({
        presets: ['es2015']
    })
    
    bify.transform(transformer)
        .bundle()
        .on('error', catchError)
        .pipe(source(name + '.min.js'))
        .pipe(buffer())
        .pipe(plugins.uglify())
        .on('error', catchError)
        .pipe(gulp.dest('./dist'))
    

    main.js exports a function:

    export default function(e, items, opts = {}) { … }
    

    As I'm bundling this file as a standalone UMD module, I expected the variable basicContext to be a function. This was the case before I updated babelify and babel. Now basicContext is the following:

    console.log(basicContext)
    // {__esModule: true, default: function}
    

    Best Tobias

    • Could be cased by Babel 6, too. It's really not easy to find the dependency casing the issue.
    opened by electerious 20
  • "SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'"

    Not sure what's going on, but this message just started showing up...

    "SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'"

    Here's the relevant bit from my gulp file:

    'use strict';
    
    var gulp = require('gulp'),
        notify = require("gulp-notify"),
        babelify = require('babelify'),
        browserify = require('browserify'),
        browserSync = require('browser-sync'),
        source = require('vinyl-source-stream'),
        uglify = require('gulp-uglify'),
        buffer = require('vinyl-buffer');
    
    var vendors = [
      'jquery',
      'moment',
      'd3',
      'queue-async',
      'react',
      'react-dom',
      'react-bootstrap',
      'react-infinite',
      'lodash',
      'rc-switch',
      'rc-slider',
      'he',
      'react-debounce-input',
      'react-swipe-views',
      'react-modal',
    ];
    
    
    gulp.task('app', function () {
        var stream = browserify({
                entries: ['./app/app.jsx'],
                transform: [babelify],
                debug: false,
                extensions: ['.jsx'],
                fullPaths: false
            });
    
        vendors.forEach(function(vendor) {
            stream.external(vendor);
        });
    
        return stream.bundle()
                     .pipe(source('build.min.js'))
                     .pipe(buffer())
                     .pipe(uglify())
                     .pipe(gulp.dest('build/js'))
                     .pipe(notify("Successfully built build.min.js file!"));
    
    });
    

    I'm not sure what happened, but things were fine just a few days ago. Thanks!

    opened by vgoklani 20
  • It exceeds the max of

    It exceeds the max of "100KB"

    ➜ grunt browserify
    Running "browserify" (browserify) task
    
    Note: The code generator has deoptimised the styling of "index.js" as it exceeds the max of "100KB".
    

    The babelify used as transformation for grunt-browserify

    options: {
        transform: ['babelify']
    }
    

    How to skip this warning?

    opened by monolithed 20
  • babelify not being applied on .require()'d file?

    babelify not being applied on .require()'d file?

    I'm having an issue with babelify and a file I am requireing into my bundle. It complains about JSX syntax even though I have my presets configured. I tried dropping a console.log() in the Babelify function, just to see if it gets there, but I get the error and none of the stuff I am trying to log. Removing the require makes it work, but I need the require for my code to actually work in the browser.

    I've distilled this down to a very minimal repository with a gulpfile, somewhat mimicking what I'm running into: https://github.com/chielkunkels/browserify-issue

    Removing this line: https://github.com/chielkunkels/browserify-issue/blob/master/gulpfile.js#L16 makes everything work just fine. In this case the require is, of course, absolutely not needed, but in my actual code I do need it.

    opened by chiel 19
  • tsify + babelify + browserify with threejs modules: SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' (9:0)

    tsify + babelify + browserify with threejs modules: SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' (9:0)

    Hello there,

    I'm trying to use threejs with typescript for a web application. Since I would like to use modules (threejs introduced them in r105), I need to get down to es5 for browserify again for which I thought babel might be a solution. Sadly I still get the error SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' (9:0)

    I have the following configuration:

    package.json

        "@babel/cli": "^7.4.4",
        "@babel/core": "^7.4.5",
        "@babel/preset-env": "^7.4.5",
        "babelify": "^10.0.0",
        "browserify": "^16.2.3",
        "gulp": "^4.0.2",
        "tsify": "^4.0.1",
        "typescript": "^3.5.2",
    

    .babelrc

    {
        "presets": [
            ["@babel/preset-env",
                {
                    "targets": {
                        "esmodules": true
                    }
                }
            ],
        ],
        "extensions": [ ".js", ".ts", ".tsx" ]
    }
    

    .tsconfig

    {
        "include": [
            "./src/**/*"
        ],
        "compilerOptions": {
            "baseUrl": ".",
            "paths": {
                "*": ["types/*"] },
            "noImplicitAny": true,
            "noImplicitReturns": true,
            "noImplicitThis": true,
            "alwaysStrict": true,
            "strictNullChecks": true,
            "module": "commonjs",
            "moduleResolution": "node",
            "target": "es6"
        }
    }
    

    gulpfile.js

    function buildBundle() {
        return browserify({
            debug: true
        })
            .add("./src/main.ts")
            .plugin(tsify, { target: 'es6'})
            .transform(babelify)
            .bundle()
    }
    

    File at which the error is triggered

    ...
    import { ResizeSignal } from "../Signals/InputSignals/ResizeSignal";
    import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';  // this is the line
    ...
    
    private loader: GLTFLoader;
    

    What am I missing? I'm completely stuck.

    opened by JohannesDeml 17
  • npm install babelify@next: No compatible version found: babelify@next

    npm install babelify@next: No compatible version found: babelify@next

    Installation section of readme recommends install babelify as

    # Babel 7
    $ npm install --save-dev babelify@next @babel/core
    

    But when I try follow this recommendations I get error:

    >npm install --save-dev babelify@next
    npm ERR! Windows_NT 6.0.6001
    npm ERR! argv "D:\\Scripts\\JavaScript\\node.exe" "D:\\Scripts\\JavaScript\\node_modules\\npm\\bin\\npm-cli.js" "install" "--save-dev" "babelify@next"
    npm ERR! node v5.12.0
    npm ERR! npm  v3.10.10
    npm ERR! code ETARGET
    
    npm ERR! notarget No compatible version found: babelify@next
    npm ERR! notarget Valid install targets:
    npm ERR! notarget 8.0.0, 7.3.0, 7.2.0, 7.1.0, 7.0.2, 7.0.1, 7.0.0, 6.4.0, 6.3.0, 6.2.0, 6.1.3, 6.1.2, 6.1.1, 6.1.0, 6.0.2, 6.0.1, 6.0.0, 5.0.5, 5.0.4, 5.0.3, 5.0.2, 5.0.1
    npm ERR! notarget
    npm ERR! notarget This is most likely not a problem with npm itself.
    npm ERR! notarget In most cases you or one of your dependencies are requesting
    npm ERR! notarget a package version that doesn't exist.
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     D:\Projects\other\structured-diff\npm-debug.log
    

    Where I'm wrong?

    opened by Mingun 17
  • ParseError: 'import' and 'export' may appear only with 'sourceType: module'

    ParseError: 'import' and 'export' may appear only with 'sourceType: module'

    Hello,

    I updated babelify to 7.0.2 and now it throws this error:

    Browserify Error
    /Applications/MAMP/htdocs/folder-name/assets/js/main.js:1
    import framework from './framework';
    ^
    ParseError: 'import' and 'export' may appear only with 'sourceType: module'
    

    Working with 6.4.0. Do you maybe have any ideas?

    Thanks!

    opened by baptistebriel 17
  • now extensions could be used in an array when using browserify cli

    now extensions could be used in an array when using browserify cli

    Got a

    if (extensions.indexOf(extname) === -1) { TypeError: extensions.indexOf is not a function

    at babelify/index.js:75 when using Browserify CLI like this:

    [ babelify --presets [ @babel/preset-env @babel/preset-react ] --extensions [ .tsx .js .ts ] --plugins [ @babel/plugin-proposal-class-properties @babel/transform-runtime] ]

    My PR should fix it.

    opened by mugeco 0
  • Update README.md

    Update README.md

    @babel/plugin-transform-class-properties is now renamed to @babel/plugin-proposal-class-properties and included into @babel/preset-env preset

    See https://babeljs.io/docs/en/babel-plugin-proposal-class-properties

    opened by astef 0
  • Continued problems with issue #103 ('import' and 'export' may appear only with 'sourceType: module')

    Continued problems with issue #103 ('import' and 'export' may appear only with 'sourceType: module')

    Hello. This is a follow up to an existing (but closed) issue (#103). I am having the same issue. I've tried the suggestions in #103, but still cannot resolve the issue (see below). Are the solutions in that issue still relevant, or have they become obsolete?

    In my case, the Browserify command is:

    node_modules/.bin/browserify www/js/functions.js test/tape.test.js -t [ babelify ] --outfile test/test-bundle.js

    It is failing with the error:

    SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' (4819:0) while parsing C:\Users\snarl\Orbis\osatest\node_modules\fetch-mock\esm\client.js while parsing file: C:\Users\snarl\Orbis\osatest\node_modules\fetch-mock\esm\client.js


    My Attempts To Resolve

    --From #103, I tried installing the package babel-preset-es2015 then running the command:

    node_modules/.bin/browserify www/js/functions.js test/tape.test.js -t [ babelify --presets [ es2015 ] ] --outfile test/test-bundle.js

    The previous error was gone, but it failed with a new error:

    Error: Plugin/Preset files are not allowed to export objects, only functions. In C:\Users\snarl\Orbis\osatest\node_modules\babel-preset-es2015\lib\index.js while parsing file: C:\Users\snarl\Orbis\osatest\test\tape.test.js

    A few Stack Overflow posts (example) seemed to indicate that this was because I was using babel-preset-es2015, and had to eschew it in favor of a different package; @babel/preset-env I've removed the old package, and installed the new package. But the Browserify command is back to failing with the original import/export error.

    --With @babel/preset-env installed, I tried three different configurations in my project's babel.config.js file (see pastebin here), but none had any effect on the issue. Those suggestions were taken from the @babel/preset-env page.

    --With @babel/preset-env installed, I tried using the following command from the command line, but there was no change in the result.

    node_modules/.bin/browserify www/js/functions.js test/tape.test.js -t [ babelify --presets [ es2015 ] ] --outfile test/test-bundle.js

    --To see the code in each of my JS files, please see this pastebin.


    FYI I am using Browserify v16.5.1 and Babelify v10.0.0.

    Thanks in advance.

    opened by cagross 4
  • fix browserify cli extensions subarg array

    fix browserify cli extensions subarg array

    Overriding the default extensions (.js, .es, .es6 and .jsx) using cli option --extensions [ ] leads to TypeError, reported here.

    This commit allows devs to use subarg array instead of repeating --extensions .ext1 --extensions .ext2 ...

    opened by estevezluis1 0
Releases(v10.0.0)
  • v10.0.0(Sep 7, 2018)

  • v10.0.0-beta.1(Sep 7, 2018)

  • v10.0.0-beta.0(Sep 7, 2018)

    • #267 - Fix handling for ignoreed files from Babel
    • #262 - Fix README examples that were wrong
    • #273 - More updates for Babel 7.x
    • A bunch more fixes to make things work well
    Source code(tar.gz)
    Source code(zip)
  • v9.0.0(Sep 7, 2018)

    • #255 - Initial upgrade to Babel 7.x
    • #264 - Use Browserify's basedir as the working directory Babel's config.

    This is marked as a prerelease because it was never published as latest on npm.

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0(Oct 26, 2017)

    v8.0.0

    • Drop Node 0.10/0.12/5 (similar to everything else in Babel 7)
    • Add a peerDep on babel-core (similar to how babel-loader works), this is because people end up using incompatible versions of plugins/presets/tools (especially as we make a new major)

    https://github.com/babel/grunt-babel/releases/tag/v7.0.0 https://github.com/babel/gulp-babel/releases/tag/v7.0.0

    https://github.com/babel/babelify/commit/02f97eca636be7dd02d5b519b329fdac8df57239

    Source code(tar.gz)
    Source code(zip)
Owner
Babel
The community maintained compiler for next generation JavaScript, today.
Babel
Babel-plugin-amd-checker - Module format checking plugin for Babel usable in both Node.js the web browser environments.

babel-plugin-amd-checker A Babel plugin to check the format of your modules when compiling your code using Babel. This plugin allows you to abort the

Ferdinand Prantl 1 Jan 6, 2022
Babel plugin and helper functions for interoperation between Node.js native ESM and Babel ESM

babel-plugin-node-cjs-interop and node-cjs-interop: fix the default import interoperability issue in Node.js The problem to solve Consider the followi

Masaki Hara 15 Nov 6, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Test runner based on Tape and Browserify

prova Node & Browser Test runner based on Tape and Browserify. Screencasts: node.gif, browser.gif, both.gif, headless browser Slides: slides.com/azer/

Azer Koçulu 335 Oct 28, 2022
Isomorphic WHATWG Fetch API, for Node & Browserify

isomorphic-fetch Fetch for node and Browserify. Built on top of GitHub's WHATWG Fetch polyfill. Warnings This adds fetch as a global so that its API i

Matt Andrews 6.9k Jan 2, 2023
A browserify plugin to load CSS Modules

css-modulesify A browserify plugin to load CSS Modules. Please note that this is still highly experimental. Why CSS Modules? Normally you need to use

null 407 Aug 15, 2022
React Starter Kit — isomorphic web app boilerplate (Node.js, Express, GraphQL, React.js, Babel, PostCSS, Webpack, Browsersync)

React Starter Kit — "isomorphic" web app boilerplate React Starter Kit is an opinionated boilerplate for web development built on top of Node.js, Expr

Kriasoft 21.7k Dec 30, 2022
React + Redux starter kit / boilerplate with Babel, hot reloading, testing, linting and a working example app built in

A comprehensive starter kit for rapid application development using React. Why Slingshot? One command to get started - Type npm start to start develop

Cory House 9.8k Dec 22, 2022
Transform SVGs into React components 🦁

Transform SVGs into React components ?? Try it out online! Watch the talk at React Europe SVGR transforms SVG into ready to use components. It is part

Greg Bergé 9.3k Jan 3, 2023
React Starter Kit — isomorphic web app boilerplate (Node.js, Express, GraphQL, React.js, Babel, PostCSS, Webpack, Browsersync)

React Starter Kit — "isomorphic" web app boilerplate React Starter Kit is an opinionated boilerplate for web development built on top of Node.js, Expr

Kriasoft 21.7k Jan 1, 2023
React + Redux starter kit / boilerplate with Babel, hot reloading, testing, linting and a working example app built in

A comprehensive starter kit for rapid application development using React. Why Slingshot? One command to get started - Type npm start to start develop

Cory House 9.8k Jan 3, 2023
🐠 Babel is a compiler for writing next generation JavaScript.

The compiler for writing next generation JavaScript. Supporting Babel Babel (pronounced "babble") is a community-driven project used by many companies

Babel 41.8k Jan 9, 2023
Pre-evaluate code at build-time with babel-macros

preval.macro This is a babel-plugin-macros macro for babel-plugin-preval. Please see those projects for more information. Installation This module is

Kent C. Dodds 118 Dec 16, 2022
Turn your ES5 code into readable ES6. Lebab does the opposite of what Babel does.

Lebab Lebab transpiles your ES5 code to ES6/ES7. It does exactly the opposite of what Babel does. If you want to understand what Lebab exactly does, t

Lebab 5.5k Dec 31, 2022
JavaScript library to transform coordinates from one coordinate system to another, including datum transformations

PROJ4JS Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations. Origina

null 1.7k Dec 28, 2022
A decorative website background effect where SVG shapes morph and transform on scroll.

Morphing Background Shapes A decorative website background effect where SVG shapes morph and transform on scroll. Article on Codrops Demo This demo is

Codrops 351 Dec 26, 2022
🐠 Babel is a compiler for writing next generation JavaScript.

The compiler for writing next generation JavaScript. Supporting Babel Babel (pronounced "babble") is a community-driven project used by many companies

Babel 41.8k Jan 8, 2023