2015-02-06 85 views
2

我一直在創建一些React.js組件並將它們作爲模塊發佈到npm。將reactjs組件導出爲npm時,是否包含jsx或js

我使用下面的一口任務,我所有的JSX組分轉化爲JS,使用一飲而盡-反應:

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?

回答

2

好問題,經典的「我包括構建文物在我的回購?」的特例。我傾向於指向JS文件,因爲包/依賴關係管理器的意義在於,當您發佈其他東西時,其他人應該能夠立即安裝並開始使用,而無需自行考慮依賴關係。例如:

我安裝我的命令行包:

$ npm install something 

打開節點repl和:

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

我也傾向於這個想法,指向JS文件。謝謝 – 2015-02-06 09:29:36

+0

但是重複的依賴關係呢?考慮到'parent'取決於'underscore','child'取決於'underscore'。例如,如果我們使用webpack編譯子進程,'underscore'將被包含在編譯的文件中,並在'parent'中重複。你們有什麼想法? – firstdoit 2015-04-14 20:02:33

+0

這就是npm如何處理依賴關係的問題。如果字節大小是一個問題,總會有'npm dedupe':https://docs.npmjs.com/cli/dedupe – 2015-04-16 10:46:52

0

.js,因爲這樣你可以在管道中添加更多的東西,它將被覆蓋