1

I'm new to using gulp and babel together. I've created a build task (simplified version below):

var gulp = require('gulp');
var babel = require('gulp-babel');

gulp.task('build', () => {
  return gulp.src('src/components/App.jsx')
    .pipe(babel())
    .pipe(gulp.dest('build'))
});

My file src/components/App.jsx looks like:

/** @jsx React.DOM */

import React, {Component} from 'react';

class App extends Component {
  render() {
    return <div>Example</div>
  }
}

export default App;

The error I'm getting is:

events.js:141
      throw er; // Unhandled 'error' event
      ^
SyntaxError: /Users/user/src/components/app.jsx: Unexpected token (8:6)
   6 |   render: () => {
   7 |     return (
>  8 |       <div>Test</div>
     |       ^
   9 |     )
  10 |   }
  11 | });
    at Parser.pp.raise (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/location.js:24:13)
    at Parser.pp.unexpected (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:91:8)
    at Parser.pp.parseExprAtom (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:514:12)
    at Parser.pp.parseExprSubscripts (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:267:19)
    at Parser.pp.parseMaybeUnary (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:247:19)
    at Parser.pp.parseExprOps (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:178:19)
    at Parser.pp.parseMaybeConditional (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:160:19)
    at Parser.pp.parseMaybeAssign (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:123:19)
    at Parser.pp.parseParenAndDistinguishExpression (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:566:26)
    at Parser.pp.parseExprAtom (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:471:19)

I must be doing something wrong, but I'm not sure what it is. Any ideas?

Leonid Beschastny
  • 50,364
  • 10
  • 118
  • 122
Daniel Timberlake
  • 1,179
  • 6
  • 15

1 Answers1

9

Babel starting with version 6 does not do anything by default and you must provide a set of transformers to be applied to the source code.

In your case you want both react and es2015 transformer presets:

.pipe(babel({
    presets: ['react', 'es2015']
}))

Further details:

zerkms
  • 249,484
  • 69
  • 436
  • 539