2015-10-20 9 views
15

Ho bisogno di convertire tutti i/src/file .jsx a/src/ .jsCome convertire .jsx in .js con Gulp e Babel?

Prima ho usato gulp-reagiscono:

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

gulp.task('jsx', function() { 
    return gulp.src('src/jsx/*.jsx') 
    .pipe(react()) 
    .pipe(gulp.dest('src/js/')); 
}); 

Funziona, ma non senza qualche piccolo errore. Quando utilizzo il sito Web Babel (https://babeljs.io/repl/) tutte le conversioni sono corrette. Potresti aiutarmi. Come posso impostare gulp per convertire i file .JSX?

+0

Sembra che la documentazione sul sito Web di Babel copra questo: http://babeljs.io/docs/setup/#gulp E ci sono già tonnellate di risorse che spiegano come usare 'gulp-rename'. – loganfsmyth

+0

gulp.task ('jsx', function() { return gulp.src ('src/jsx/*. Jsx') .pipe (babel()) .pipe (gulp.dest ('src/js/')); }); –

+0

Non sono sicuro di cosa stai cercando di dire con quel commento. Sì, questo verrà compilato. Quindi puoi rinominare con 'gulp-rename'. – loganfsmyth

risposta

26

In primo luogo è necessario installare questi due pacchetti:

npm install gulp-babel babel-plugin-transform-react-jsx 

allora è possibile convertire in questo modo:

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

gulp.task("babel", function(){ 
    return gulp.src("src/jsx/*.jsx"). 
     pipe(babel({ 
      plugins: ['transform-react-jsx'] 
     })). 
     pipe(gulp.dest("src/js/")); 
}); 
+0

Grazie, sembrava che mi servisse anche l'installazione di 'babel-core'. –

+0

Questa è una risposta così utile. Un sacco di situazioni in cui qualcuno * solo * ha bisogno della trasformazione JSX e nient'altro. – TKoL

3

Al fine di ottenere displayName inserita automaticamente in trasformazione, è necessario installa gulp-babel e React preset:

npm install --save-dev gulp-babel babel-preset-react 

e poi nelle gulpfile.js:

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

gulp.task("jsx", function(){ 
    return gulp.src("src/jsx/*.jsx") 
     .pipe(babel({ 
      presets: ["react"] 
     })) 
     .pipe(gulp.dest("src/js")); 
}); 
2
gulp.task('build', ['copy'], function() { 
    gulp.src([ 
      'src/**/*.jsx', 
      'src/**/*.js', 
      '!./node_modules/**' 
     ]) 
     .pipe(babel({ 
      presets: ['es2015', 'react'] 
     })) 
     .pipe(gulp.dest('app')); 
}); 

dal momento che sto anche utilizzando ES6.