2015-10-20 34 views
15

tôi cần phải chuyển đổi tất cả/src/file .jsx đến/src/ .jsCách chuyển đổi .jsx sang .js bằng Gulp và Babel?

Trước khi tôi sử dụng ngụm-phản ứng:

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

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

Nó hoạt động nhưng không phải không có một số lỗi nhỏ. Khi tôi sử dụng trang web Babel (https://babeljs.io/repl/), tất cả đều chuyển đổi đúng. Bạn có thể giúp tôi. Làm thế nào tôi có thể thiết lập gulp để chuyển đổi các tập tin .JSX?

+0

Dường như tài liệu trên trang web của Babel bao gồm: http://babeljs.io/docs/setup/#gulp Và có rất nhiều tài nguyên đã giải thích cách sử dụng 'gulp-rename'. – loganfsmyth

+0

gulp.task ('jsx', hàm() { trả về gulp.src ('src/jsx/*. Jsx') .pipe (babel()) .pipe (gulp.dest ('src/js/')); }); –

+0

Tôi không chắc chắn những gì bạn đang cố gắng để nói với bình luận đó. Đúng, điều đó sẽ biên dịch. Sau đó, bạn có thể đổi tên bằng 'gulp-rename'. – loganfsmyth

Trả lời

26

Trước tiên, bạn cần phải cài đặt này hai gói:

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

sau đó bạn có thể chuyển đổi như thế này:

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

Cảm ơn, có vẻ như tôi cũng cần cài đặt 'babel-core'. –

+0

Đây là một câu trả lời hữu ích. Rất nhiều tình huống mà ai đó * chỉ cần * cần chuyển đổi JSX và không có gì khác. – TKoL

3

Để có được displayName tự động chèn vào chuyển đổi, bạn cần phải cài đặt gulp-babel và React preset:

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

và sau đó trong 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')); 
}); 

kể từ khi tôi cũng đang sử dụng ES6.

Các vấn đề liên quan