获得重新设置和浏览器以使用ES6

时间:2015-02-25 12:52:54

标签: jsx grunt-browserify

我有一个如下配置的browserify任务:

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');
};

这会导致错误:

  

错误:路径必须是字符串

我无法从文档中了解如何执行此操作,因为我不想在package.json中配置转换。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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');
};

答案 1 :(得分:1)

或者,您也可以使用watchify简单地编译ES6模块(不使用Grunt / Gulp)。

在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