2015-02-25 2 views
4

У меня есть browserify задачу, которая сконфигурирована следующим образом:Получение reactify и browserify работать с ES6

module.exports = function(grunt) { 

    grunt.config.set('browserify', { 
    dev: { 
     src: 'assets/js/main.jsx', 
     dest: '.tmp/public/js/main.js', 
     options: { 
     debug: true, 
     extensions: ['.jsx'], 
     transform: ['reactify'] 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-browserify'); 
}; 

Я попытался его настройки использовать ES6 таким образом:

module.exports = function(grunt) { 

    grunt.config.set('browserify', { 
    dev: { 
     src: 'assets/js/main.jsx', 
     dest: '.tmp/public/js/main.js', 
     options: { 
     debug: true, 
     extensions: ['.jsx'], 
     transform: ['reactify', {'es6': true}] 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-browserify'); 
}; 

Это приводит к ошибке хотя:

Error: path must be a string

Я не могу понять из документации, как это сделать, учитывая, что я не хочу, чтобы настроить преобразование в моем р ackage.json. Любая помощь будет оценена по достоинству.

ответ

4

Мне не хватало скобки после опции преобразования. Это работает:

module.exports = function(grunt) { 

    grunt.config.set('browserify', { 
    dev: { 
     src: 'assets/js/main.jsx', 
     dest: '.tmp/public/js/main.js', 
     options: { 
     debug: true, 
     extensions: ['.jsx'], 
     transform: [ 
      [ 'reactify', {'es6': true} ] 
     ] 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-browserify'); 
}; 
+2

Спасибо, этот отсутствующий кронштейн было очень трудно отлаживать. – xiaolin

1

Кроме того, вы также можете скомпилировать модули ES6 просто (без Grunt/Глоток) с помощью watchify.

В package.json, добавьте следующее:

{ 
    "scripts": { 
    "build": "watchify -o build/bundle.js -v -d assets/js/main.jsx" 
    }, 
    "devDependencies": { 
    "browserify": "^10.2.4", 
    "envify": "^3.4.0", 
    "reactify": "^1.1.1", 
    "watchify": "^3.2.2" 
    }, 
    "browserify": { 
    "transform": [ 
     ["reactify", {"es6": true}], 
     "envify" 
    ] 
    } 
} 

В вашем терминале/командной строке запустить npm run-script build.