Pertanyaan Ubah lokasi node_modules


Apakah ada cara untuk mengubah lokasi folder node_modules?

Sebagai contoh:

- dir1
- dir2
- node_modules

untuk:

- dir1
- dir2
    - node_modules

57
2017-09-24 06:28


asal


Jawaban:


Berikut ini adalah kode yang terlihat int node_modules folder secara default

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;
};

Jadi, mengikuti adalah pola pencarian yang tepat:

  1. Node.JS melihat apakah modul yang diberikan adalah modul inti. (misalnya. http, fs, dll.) Selalu mengambil prioritas dalam pemuatan modul.

  2. Jika modul yang diberikan bukan modul inti (mis. http, fs, dll.), Node.js kemudian akan mulai mencari direktori bernama, node_modules.

    Ini akan mulai di direktori saat ini (relatif terhadap file yang sedang dieksekusi di Node.JS) dan kemudian bekerja dengan cara naik hierarki folder, memeriksa setiap level untuk folder node_modules. Sekali Node.JS menemukan node_modules folder, kemudian akan mencoba untuk memuat modul yang diberikan baik sebagai file JavaScript (.js) atau sebagai sub-direktori bernama; jika menemukan sub-direktori bernama, kemudian akan mencoba memuat file dengan berbagai cara. Jadi, misalnya

  3. Jika Anda membuat permintaan untuk memuat modul, "utils" dan direktorinya bukan file .js maka:
    Node.JS akan mencari direktori hirarkis untuk node_modules dan utils dengan cara-cara berikut:

    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
    
  4. Jika Node.JS masih tidak dapat menemukan file dalam langkah-langkah di atas, Node.js kemudian akan mulai melihat ke jalur direktori dari variabel lingkungan yaitu NODE_PATH disetel di komputer Anda (jelas ditetapkan oleh file pemasang Node.JS jika Anda berada di windows) Tidak Ditemukan di semua langkah di atas kemudian, mencetak jejak stack ke stder
    Misalnya.: Error:Cannot find module 'yourfile'
    Untuk informasi lebih lanjut: tautan adalah sini bahkan siklik membutuhkan () dijelaskan dengan sangat baik ..


45
2017-09-24 06:35



Bahkan, kami bahkan dapat mengedit nodevars.bat file di mana baris terakhir adalah:

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

Kita dapat menentukan direktori kita sendiri daripada mencari direktori home pengguna:

%HOMEDRIVE%%HOMEPATH%

sehingga lokasi node-modules akan secara otomatis tampak setelahnya.


1
2018-01-06 20:40