2017-06-15 21 views
1

正確的方式我創建了生活在與自己package.json文件不同的文件夾中的陣營機組件,我想在另一個項目什麼是創建單獨的NPM模塊,並利用它們在本地

MyComponent是用它位於Workspace/MyComponent和一些依賴於package.json

"dependencies": { 
    "react-navigation": "^1.0.0-beta.11" 
    }, 
    "peerDependencies": { 
    "react": "16.0.0-alpha.12", 
    "react-native": "0.45.1" 
    }, 
    "devDependencies": { 
    "react": "16.0.0-alpha.12", 
    "react-native": "0.45.1" 
    } 

我目前在MyComponent發展,所以我已經運行npm install的回購,有node_modules文件夾。

我有聯繫MyComponentMyApp它位於Workspace/MyApp,使用npm link

雖然,當我運行MyApp,並嘗試使用MyComponent,它抱怨重複申報,因爲react在兩個MyComponentMyApp,和他們是有聯繫的。

如果我從MyComponent刪除node_modules文件夾,react-navigation抱怨react未定義。

在ReactJS世界中,webpack例如允許使用首選的node_modules文件夾設置根目錄,這非常棒。

module.exports = { 
    ... 
    resolve: { 
    root: path.resolve(__dirname, 'node_modules'), 
    } 
    ... 
} 

我希望做相似的,所以我沒有重複模塊,可調試MyAppMyComponent本地而不需要重新MyComponent爲每一個變化的東西。實現這個目標的最佳方法是什麼?

感謝

回答

0

如果是這樣的東西,最終是要在自己的回購,然後將安裝像任何其他成分,我可能只是建立在它的父項目的node_modules目錄。這會阻止你爲每一個小改動運行npm install

您也可以聲明對本地文件的依賴性,然後NPM將在node_modules安裝

"dependencies": { 
    "my-component": "file:app/components/my-component", 
    } 

所以我有,我已經在我的項目,在我的package.json引用內部建立一個組件文件。當我運行npm install時,此組件安裝在node_modules文件夾中。這可能有助於重複庫的聲明,但它不會解決重複使用npm install

更新:我剛瞭解到,npm 5不會將文件複製到node_modules文件夾。它現在創建一個符號鏈接(基本上,一個指向真實目錄的虛擬目錄)到項目中的代碼。

這意味着您每次更改代碼時都不必運行npm install,因此它可能是您的最佳解決方案。

+0

['NPM link'(HTTPS://docs.npmjs。com/cli/link)是另一種可能的解決方案。 –

相關問題