需要 jsx 文件而不指定扩展名

Require jsx files without specifying extension

我正在使用 browserifywatchify,并且想要 require() 默认扩展名以外的文件 .js.json 而不指定扩展名,例如:

// Not ideal (tedious)
var Carousel = require('./components/Carousel/Carousel.jsx')

// Ideal
var Carousel = require('./components/Carousel/Carousel')

我已经按照 browserify 文档中的说明尝试了 --extension=EXTENSION

"scripts": {
  "build": "browserify ./src/App.js --transform [ reactify --es6 ] > dist/script.js -v -d --extension=jsx",
  "watch": "watchify ./src/App.js --transform [ reactify --es6 ] -o dist/script.js -v -d --extension=jsx"
},

但是我没有看到任何变化。这可能吗?这样做的正确方法是什么?

编辑(2015 年 4 月 27 日): 我只是注意到在问题中,我对 extension 有一个无效的参数,例如:

"watch": "watchify ./src/App.js --extension=jsx -o dist/script.js -v -d"

应该是(注意--extension=.jsx中的.(点):

"watch": "watchify ./src/App.js --extension=.jsx -o dist/script.js -v -d"

原答案:

browserify 选项添加到 package.json 是为了 browserify 而不是 watchify

"scripts": {
  "build": "browserify ./src/App.js > dist/script.js -v -d",
  "watch": "watchify ./src/App.js -o dist/script.js -v -d"
},
"browserify": {
  "extension": [ "jsx" ],
  "transform": [ [ "reactify", { "es6": true } ] ]
}

为使 watchify 工作的 watch 命令添加 extension 选项。

"watch": "watchify ./src/App.js --extension=.jsx -o dist/script.js -v -d"

但是,非DRY。我想让我的命令尽可能简短,但是~哦好吧~。