2015-12-08 3 views
6

Это мой gulpfile код:Глоток, Reactify и Babelify не превращая вместе

gulp.task('react', function() { 
    browserify('app/src/main.jsx') 
    .transform(reactify) 
    .transform(babelify) 
    .bundle() 
    .pipe(source('app.js')) 
    .pipe(streamify(uglify())) 
    .pipe(gulp.dest('dist/js/')); 
}); 

только первый преобразующие пробеги заявление, и для этого выдает ошибку из-за отсутствия дополнительного преобразования (я пишу в ES6 и JSX с реакцией).

Я нахожусь в полной потере и очень ценю помощь.

ответ

10

Реакция больше не должна использоваться. Вы не говорите, какую версию вы используете, но по состоянию на Babel 6 «пресет» - это стандартный способ достижения компиляции.

Выполните следующую

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

Вы также должны убедиться, Babelify до настоящего времени. Тогда ваш Глоток конфигурация становится

var babelify = require("babelify"); 
gulp.task('react', function() { 
    browserify('app/src/main.jsx') 
    .transform(babelify, {presets: ["es2015", "react"]}) 
    .bundle() 
    .pipe(source('app.js')) 
    .pipe(streamify(uglify())) 
    .pipe(gulp.dest('dist/js/')); 
}); 

Смотрите options page для получения дополнительной информации.

+0

Когда вы говорите, что реакция не должна использоваться, вы говорите широко или об этом конкретном сценарии? – backdesk

+1

Babel делает все, что нужно для реактивов, и многое другое, и так же легко настроить с помощью gulp/grunt или самостоятельно. OP is * уже использует babel *, поэтому нет смысла также использовать refify – Tyrsius

+1

Спасибо. Получил здесь, после того, как искал по каким-то веским причинам, чтобы оправдать одно из других выше личных предпочтений. – backdesk