62

node_modules フォルダーの場所を変更する方法はありますか?

例えば:

- dir1
- dir2
- node_modules

に:

- dir1
- dir2
    - node_modules
4

2 に答える 2

53

node_modules以下は、デフォルトでフォルダーを検索するコードです

Module.prototype.load = function(filename) {
  debug('load ' + JSON.stringify(filename) +
        ' for module ' + JSON.stringify(this.id));

  assert(!this.loaded);
  this.filename = filename;
  this.paths = Module._nodeModulePaths(path.dirname(filename));

  var extension = path.extname(filename) || '.js';
  if (!Module._extensions[extension]) extension = '.js';
  Module._extensions[extension](this, filename);
  this.loaded = true;
};

したがって、以下は正確な検索パターンです。

  1. Node.JSは、指定されたモジュールがコア モジュールであるかどうかを確認します。(例: httpfsなど) モジュールのロードでは常に優先されます。

  2. 指定されたモジュールがコア モジュール (例: 、など) でない場合httpfsNode.js は、という名前のディレクトリの検索を開始しますnode_modules

    現在のディレクトリ ( Node.JSで現在実行中のファイルに関連する) で開始し、フォルダー階層を上っていき、各レベルで node_modules フォルダーをチェックします。Node.JSがフォルダーを見つけるとnode_modules、指定されたモジュールを (.js) JavaScript ファイルまたは名前付きサブディレクトリとしてロードしようとします。指定されたサブディレクトリが見つかった場合は、さまざまな方法でファイルをロードしようとします。たとえば、

  3. モジュール「utils」とそのディレクトリ (.js ファイルではない) をロードするリクエストを行うと、
    Node.JSは次の方法で階層ディレクトリnode_modulesを検索します。utils

    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
    
  4. 上記の手順でNode.JSがまだファイルを見つけられない場合、Node.js は環境変数からディレクトリ パスを調べ始めNODE_PATHます。上記のすべての手順で見つかりませんでした。スタック トレースをstderに出力します
    :詳細情報: リンクはこちらです。周期的な require()についても非常によく説明されています。Error:Cannot find module 'yourfile'

于 2013-09-24T06:35:10.803 に答える
0

nodevars.bat実際、最後の行が次のファイルを編集することもできます。

if "%CD%\"=="%~dp0" cd /d "%HOMEDRIVE%%HOMEPATH%"

ユーザーのホーム ディレクトリを確認する代わりに、独自のディレクトリを指定できます。

%HOMEDRIVE%%HOMEPATH%

node-modules-location が自動的に処理されるようにします。

于 2016-01-06T20:40:55.370 に答える