将reactjs组件作为节点模块导出到npm时,是否包含jsx或js

我一直在创build一些React.js组件,并将它们作为模块发布到npm。

我正在使用下面的gulp任务将所有的jsx组件转换为js,使用gulp-react:

var react = require('gulp-react'); gulp.task('react', function () { return gulp.src('./jsx/*.jsx') .pipe(react({ harmony: true })) .pipe(gulp.dest('./js/')); }); 

所以在我发布的模块中,我在js和jsx文件夹中有组件。

我的问题是哪个是更好的指向我的package.json的主要文件?

JS

 "main": "js/todo.js", 

或者jsx

 "main": "jsx/todo.jsx", 

我会假设如果我指向他们的JSX然后他们将需要吞噬反应安装,所以我将它添加到peerDependencies?

好的问题,这是一个经典的“我包括构build文物在我的回购?”的特殊情况。 我倾向于指向JS文件,因为包/依赖关系pipe理器的一个重点是,当你发布的东西时,其他人应该能够立即安装并开始使用,而不必自己考虑依赖关系。 例如:

我在命令行上安装我的软件包:

 $ npm install something 

打开Node repl和:

 > var something = require('something'); undefined > something.functionallity(1, 2, 3); ...whatever, but you wouldn't like an error now... 

你的.js ,因为那样你可以在pipe道中添加更多的东西,它会被覆盖