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

srp*_*rph 12 javascript browserify reactjs react-jsx

我使用browserifywatchify,并想require()比默认扩展名的其他文件.js,并.json没有指定扩展名,比如:

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

// Ideal
var Carousel = require('./components/Carousel/Carousel')
Run Code Online (Sandbox Code Playgroud)

我曾尝试--extension=EXTENSION为在指定browserify文档:

"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"
},
Run Code Online (Sandbox Code Playgroud)

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

srp*_*rph 16

编辑(2015年4月27日):我刚注意到在问题中,我的参数无效extension,如下:

"watch": "watchify ./src/App.js --extension=jsx -o dist/script.js -v -d"
Run Code Online (Sandbox Code Playgroud)

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

"watch": "watchify ./src/App.js --extension=.jsx -o dist/script.js -v -d"
Run Code Online (Sandbox Code Playgroud)

原答案:

添加的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 } ] ]
}
Run Code Online (Sandbox Code Playgroud)

添加命令extension选项以watch进行watchify工作.

"watch": "watchify ./src/App.js --extension=.jsx -o dist/script.js -v -d"
Run Code Online (Sandbox Code Playgroud)

但是,非DRY.我想尽可能缩短我的命令,但是〜哦,好吧〜.

  • 对我来说,只有在我使用`--extension = .jsx``设置扩展名时,browserify才有效 (4认同)