在package.json中声明时,Reactify转换未运行

时间:2014-10-07 18:20:23

标签: gulp reactjs browserify

我尝试使用browserify和gulp进行重新转换。

这项gulp任务有效:

return browserify({
        paths: ['./node_modules','./app/scripts/'],
        entries: ['./app/scripts/index.js'],
        transform: ['reactify'],
        debug: true
    })
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(gulp.dest('.tmp/scripts/'));

如果我从gulp中删除转换键并将其移动到package.json:

  "browserify": {
    "transform": [
      ["reactify", {"es6": true}]
    ]
  }

变换不再运行(也在没有es6的情况下尝试过)。

我正在使用这个yeoman发电机:https://www.npmjs.org/package/generator-react-spa

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:3)

package.json中的config用于两种情况:

  • 您使用browserify命令行工具
  • 它是一个非当前的包(例如,当你需要时,会使用react&#39的package.json配置)

如果您正在使用api,则需要手动指定转换。为避免重复自己:

var package = require('./package.json');
browserify({
        paths: ['./node_modules','./app/scripts/'],
        entries: ['./app/scripts/index.js'],
        transform: package.browserify.transform,
        debug: true
})

或者更常见的是,合并可以是您最喜欢的合并实现(例如_.defaults

browserify(merge({}, package.browserify.transform, {
        paths: ['./node_modules','./app/scripts/'],
        entries: ['./app/scripts/index.js'],
        debug: true
}))

答案 1 :(得分:1)

也许它不应该那样工作?即browserify命令不会读取您自己的package.json,只读取所需的模块(?)。

https://github.com/substack/node-browserify#browserifytransform

  

现在当某人需要()你的模块时,brfs将自动应用于模块中的文件,而无需使用你模块的人明确干预。