2016-12-03 50 views
1

在OSX/* nix上的~/.npm目錄包含NPM緩存,這似乎像這樣被結構化:需要從NPM緩存NPM模塊

foo/ 
    0.1.2/ 
    1.0.01/ 
    1.3.34/ 
    2.0.1/ 
bar/ 
    0.3.8/ 
    2.1.1/ 
baz/ 
    3.2.1/ 
    4.1.7/ 

我想知道,如果我們可能需要從該目錄模塊目錄。我相信這完全違背了NPM理念,但只是想知道最簡單的方法是什麼。

我想更改NODE_PATH以使用〜/ .npm目錄是可能的,但〜/ .npm目錄似乎有不同的結構,所以不知道require()是否可以使用。

我們看到像Yarn新包經理誰試圖改善NPM。在我看來,至今爲止NPM並不只是使用.npm緩存來引用依賴項(爲什麼要在項目目錄本地重寫它們),但是也許有人可以解決這個問題,我仍然困惑不已。

我的最終目標是找到一種方式來獲得鉅額的依賴像巴貝爾,伊斯坦布爾在一個位置上的磁盤,並參考該位置隨處可見(至少在相同的用戶)。使用像NVM這樣的工具,全局模塊位置(npm root -g)會發生變化,所以最好使用$ HOME目錄中的某些內容,並且因爲.npm高速緩存已經存在,所以它提供了一種可能性。

除了操作NODE_PATH來處理〜/ .npm目錄(我只是試過了,〜/ .npm的目錄結構似乎排除了這一點),另一種解決方案可能是以編程方式使用npm。

事情是這樣的:

const npm = require('npm'); 
npm.load({ 
    loaded: false 
}, function (err) { 
    // catch errors 
    npm.commands.install(['babel','istanbul'], function (er, data) { 
    // log the error or data 
    }); 
    npm.on('log', function (message) { 
    // log the progress of the installation 
    console.log(message); 
    }); 
}); 
+0

如果你有一個'項目/目錄,你可以在該目錄中的'node_modules'幷包含一個'需要()'在父母的'node_modules' *模塊應該*能夠訪問每一個子目錄中安裝的東西它(請參閱[Node文檔](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders))。這是否接近您所需要的,或者您是否特意要緩存成爲源代碼? – Aurora0001

回答

1

我一直在問自己同樣的問題。如果我有一個package.json以及我需要的所有依賴關係以及我需要的所有依賴關係,那麼爲什麼我需要再次執行該操作並將自己弄糊塗並導致「配置疲勞」? 有一種方法,我敢肯定,但每次我試圖要麼使用package.json或從任何地方訪問的webpack.config.js但預定位置時,我建立了它,它不部分或全部無效。

另外,櫻桃挑選出你node_modules文件夾的內容可能導致奇怪的問題,所以我不亂用往心裏去。

只需使用:

NPM安裝[依賴,開發工具,和你需要什麼]

,你應該是甜的。

無需具有正在傳遞您的最佳CONFIGS - 只是保持你的NPM手頭上安裝命令複製和粘貼的意願。

+0

幹得好你的第一個答案!我剛剛對格式化做了一些調整,並刪除了一些有切點的評論,但除此之外,這是一個有趣的解釋。確保你看看我改變了什麼,這樣你就可以看到網站上的預期情況,所以你的問題可以被其他人收到。 – Aurora0001