2017-08-09 36 views
0

我有一個React應用程序,它是用ES6/JSX編寫的並由Webpack傳輸的。我想將這個應用程序的一部分提取到一個單獨的存儲庫(github)中,並將其作爲dependency包含在package.json中。 我不明白的是,如果我需要創建/dist目錄與ES5編譯版本的依賴關係,然後再推送到github。React應用程序 - ES6外部依賴關係

我認爲如果我使用Webpack來構建主應用程序,我的依賴關係也可以在ES6中編寫,而無需額外轉譯ES5。當我從這個依賴項中導入某些東西時,它會被包含並在主構建中進行轉換。我對嗎?

+0

除非你明確告訴Webpack/Babel去傳譯它。 – Scimonster

+0

@Scimonster :(這意味着依賴項應該有一個入口點,並提供其自身的轉發版本以便被其他應用程序使用? –

+1

是的,它最終變得更簡單,而不是特殊情況下的依賴 – Scimonster

回答

1

你通常不會。我建議你作爲一個獨立的庫(已經編譯好)提取你的功能,並導出每個React組件(或者你正在導出的任何功能),然後從你需要的所有項目中導入它。

使用npm您可以導入基於git的項目(包括github),而無需將它們發佈到npm數據庫中。

爲此,您可以擁有一個index.js文件,其中包含從不同文件導入的所有內容並導出。

+0

是的,這是我想要實現的東西你知道是否有可能建立npm依賴沒有明確的入口點嗎我的意思是這個lib我試圖建立的只是一組可重用的函數,我想保持它們分開 –

+1

我不知道你是什麼意思,你可以在你的package.json中輸入一個輸入你想要的每一個功能的入口點,檢查異步庫的結尾,例如:https://github.com/caolan/async /blob/master/dist/async.js – lilezek

2

通常Webpack配置會忽略您的package.json中的任何內容。我建議將其他圖書館建設爲完全獨立的圖書館。如果由於某種原因,這不是一個選項,你可以改變你的Webpack配置,以允許其他軟件包被轉發。事情是這樣的:

loaders: [ 
    { 
    test: /\.jsx?$/, 
    exclude: /node_modules\/(?!moduleName)/ 
    loader: 'babel', 
    query: { 
     presets: ['react', 'es2015'] 
    } 
    } 
], 

這從transpiling所有節點模塊除了moduleName停止巴貝爾。顯然,將其改爲正確的模塊名稱。

+1

謝謝你的好意思,所以它意味着每個想要使用這個依賴項的應用程序都負責調整它的webpack配置,以便進行轉譯工作。使這個lib的轉譯版本受到影響 –