OSX/*nix では、~/.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の哲学に完全に反していると確信していますが、最も簡単な方法は何でしょうか。
~/.npm ディレクトリを使用するように NODE_PATH を変更する可能性があると思いますが、 ~/.npm ディレクトリの構造が異なるようです。それでrequire()
機能するかどうかはわかりません。
Yarn
改善しようとしているような新しいパッケージ マネージャーが表示されNPM
ます。私の意見では、NPM が .npm キャッシュを使用して依存関係を参照するだけではない理由 (なぜそれらをプロジェクト ディレクトリでローカルに書き換えるのですか?) について、私はまだ混乱していますが、誰かがそれに対処できるかもしれません。
私の最終目標は、Babel、Istanbul のような巨大な依存関係をディスク上の 1 つの場所に取得し、その場所をどこでも (少なくとも同じユーザーに対して) 参照する方法を見つけることです。NVM などのツールを使用すると、グローバル モジュールの場所 (npm root -g) が変更されるため、$HOME ディレクトリ内の何かを使用するのが最善です。.npm キャッシュが既にそこにあるため、可能性があります。
~/.npm ディレクトリで動作するように NODE_PATH を操作する以外に (試してみたところ ~/.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);
});
});