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