は、私は2つの次のスクリプトを使用して卑劣な解決策を考え出しました
var fs = require("fs");
try
{
fs.mkdirSync("./app/node_modules/");
}
catch(e)
{
}
try
{
if(process.platform.indexOf("win32") !== -1)
{
fs.symlinkSync("./app/node_modules/","./node_modules/","junction");
}
else
{
fs.symlinkSync("./app/node_modules/","./node_modules","dir");
}
}
catch(e){}
postinstall.js
var fs = require("fs");
try
{
if(process.platform.indexOf("win32") !== -1)
{
fs.unlinkSync("./node_modules/");
}
else
{
fs.unlinkSync("./node_modules");
}
}
catch(e){}
あなたがscripts
オプションに追加することによって、あなたのpackage.json
ファイルにそれらを使用するだけです:
"scripts": {
"preinstall": "node preinstall.js",
"postinstall": "node postinstall.js"
},
ので、大きな問題がある:それは何をするのでしょうか?
さて、あなたが欲しいサブフォルダ内node_modules
を作成npm install
preinstall.js
スクリプト火災を呼び出します。次にnode_modules
からまたはshortcut
が作成され、npm
は実際のnode_modules
になります。
次に、npm
はすべての依存関係をインストールします。
最後に、すべての依存関係がインストールされると、を削除するpostinstall.js
スクリプトが起動します。
これは便利なものです。必要なものはすべてgistです。
**あなたがすることはできません。** 'npm'は、ここでは詳述パッケージを見つけるためのノードのアルゴリズムを使用しています。 変更する必要がありますあなたの'node'バイナリを" vendor/node_modules "に対応させるためには –
本当ですが、npmはカスタムディレクトリにもインストールされません。ノードがさまざまなnode_modulesの場所を参照する前に使用する必要のあるパスを指定することはできますが、npmはnode_modules以外の場所をインストールしません。ですから、npmを使わずにノードプロジェクトを技術的に書くことはできますが、すべての要求に対してすべてのパスをハードコードする必要があります。 –