有沒有辦法來改變node_modules文件夾的位置?更改node_modules位置
例如:
- dir1
- dir2
- node_modules
到:
- dir1
- dir2
- node_modules
有沒有辦法來改變node_modules文件夾的位置?更改node_modules位置
例如:
- dir1
- dir2
- node_modules
到:
- dir1
- dir2
- node_modules
以下是在默認情況下看起來的int 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;
};
因此,代碼,以下是詳細的搜索模式:
Node.JS查看是否給定的模塊是核心模塊。 (例如http
,fs
等)總是優先於裝載 模塊。
如果給定的模塊不是核心模塊(例如http
,fs
等),Node.js的然後將開始搜尋一個新的目錄,node_modules
。
它將從當前目錄(相對於Node.JS中當前正在執行的文件)開始,然後沿着文件夾層次結構前進,檢查每個級別的node_modules文件夾。 一旦Node.JS發現node_modules
文件夾,則它將嘗試加載給定的模塊或者作爲(的.js)JavaScript文件或命名子目錄;如果它找到了指定的子目錄,它將嘗試以各種方式加載文件。因此,例如
如果您的請求加載模塊「utils的」,其目錄不是.js文件然後:
Node.JS將搜索分層目錄在下列方式node_modules
和utils
:
./node_modules/utils.js
./node_modules/utils/index.js
./node_modules/utils/package.json
如果Node.JS仍然無法找到上述步驟的文件,Node.js的就會開始尋找到的目錄路徑從環境變量,即您的機器上NODE_PATH
集(明顯受到Node.js的設置安裝程序文件,如果你在Windows上) 在所有然後上述步驟沒有找到,將打印一個堆棧跟蹤stder
例如:Error:
Cannot find module 'yourfile'
欲瞭解更多信息:鏈接是here甚至循環需要()解釋非常好..
非常感謝你對這個很好的解釋。所以把它放在一起 - 由於與其他模塊的兼容性,有沒有簡單的方法來做到這一點,或不應該做的? –
你可以用你的require('./ pathFolder/PathFile');' –
但是這不是我想要達到的目的。我想要的只是將node_modules文件夾放在其他地方。 –
事實上,我們甚至可以編輯nodevars.bat
文件中的最後一行是:
if "%CD%\"=="%~dp0" cd /d "%HOMEDRIVE%%HOMEPATH%"
我們可以指定,而不是用戶的主目錄照顧我們自己的目錄中:
%HOMEDRIVE%%HOMEPATH%
這樣node-modules-location會自動關閉。
我想你正在尋找一種方法來在不同的文件夾中安裝依賴關係,對吧?如果是這樣,你只需要在'dir2'裏面移動'package.json'文件,然後從dir2運行'npm install'。 – Kamrul
@Kamrul但是我將不得不運行dir2的應用程序? –
@Kamrul它爲我做了詭計!只需使用shell腳本啓動服務器,而不是默認的npm start。請將它作爲答案發布,以便我可以接受它。 –