一、node_modules是什麼
Node.js中的node_modules是一個目錄,是用來存放所有依賴模塊的目錄。當在一個應用程序中使用了第三方模塊時,將該模塊安裝在node_modules中,這樣Node.js就可以自動查找和使用這個模塊了。
node_modules中的每個模塊都是一個目錄,而這個目錄中有一個package.json文件來描述這個模塊的信息,例如模塊的名稱、版本號、入口文件等。在包管理工具npm的安裝流程中,有一個步驟是會自動在項目目錄下生成一個node_modules目錄,並將所有安裝的依賴模塊存放在其中。
二、node_modules刪不掉
有時候,當我們刪除了某個項目,不再需要用到node_modules中安裝的模塊時,可能會誤刪node_modules目錄。但是,如果你通過系統的刪除操作,刪除該目錄下的文件,系統會提示你文件太多無法刪除,請問該怎麼辦呢?
這是因為,Windows系統限制了文件夾名稱的字元數。而node_modules中的文件夾名稱是由模塊名稱組成的,如果模塊名稱的長度過長的話,就會導致文件夾名稱過長,超過了Windows系統規定的字元數限制。
在這種情況下,最好的方式是使用管理員許可權刪除該目錄,或者使用命令行工具刪除。
rd /s /q node_modules
三、node_modules幹什麼的
node_modules是Node.js應用程序中的所有依賴模塊的託管庫。在開發過程中,我們經常會使用一些第三方工具庫來提高開發效率。這些工具庫可以極大地減少我們編寫重複代碼的時間和精力,使我們可以更專註於業務邏輯的實現。
node_modules方便了我們在本地管理和使用這些依賴模塊,並且在發布應用程序時,只需要將應用程序的代碼和node_modules目錄一起打包即可,使得部署變得更加簡便和快捷。
在package.json中使用dependencies屬性將需要的依賴項添加進去,想要對模塊加以限制和說明,可以用版本號表示模塊的精確版本,如:
"dependencies": {
"express": "^4.16.4"
}
在這個例子中,表示的是依賴於express模塊的4.16.4版本及以上。使用npm install命令時,npm會根據dependencies的描述去下載這個模塊,並將其儲存在node_modules文件夾下。
四、node_modules拷貝到其他電腦
我們可以將包含node_modules的項目複製到另一台電腦上,但是這並不是一個好的做法。因為在不同的機器中,環境、版本等因素很有可能會有很大的不同,這樣可能會導致你的應用程序無法正常運行。
如果必須要在另一台電腦上運行該應用程序,則應該使用npm install命令重新下載所有的依賴項,這樣才能保證該應用程序能夠正常工作。
五、node_modules拷貝到其他目錄
在開發過程中,有時候我們需要在多個項目中共享同一個依賴模塊,但是每一個項目都將這個依賴模塊下載到自己的node_modules目錄下,這樣會浪費很多磁碟空間。
為了解決這個問題,我們可以使用npm的全局安裝命令來安裝依賴模塊。這樣,該依賴模塊就會被安裝在全局的node_modules目錄中,不會被重複下載和安裝。如果需要使用該依賴模塊,我們可以在項目中使用require來引入該模塊就可以了。
全局安裝方法:
npm install -g 包名
使用require引入全局安裝的依賴模塊的方法:
var 包名 = require('包名')
六、node_modules可以拷貝嗎
我們可以拷貝node_modules目錄,但是,在拷貝過程中可能會遇到一些問題。例如,node_modules目錄中往往包含大量文件,如果我們在拷貝過程中出現了文件名過長、拷貝失敗等問題,就需要手動去解決這些問題。
一般來說,我們最好選擇使用命令行的方式拷貝,這樣可以避免一些問題,並且可以更方便地進行定製。
拷貝命令的示例:
robocopy sourceDirectory targetDirectory
七、為什麼兩個盤都有node_modules
在Windows系統中,當在兩個不同的盤符下安裝了多個Node.js應用程序時,它們的node_modules目錄可能會出現在兩個不同的位置。
這是因為在Windows系統中,每個盤符都有自己的磁碟空間和文件系統。當我們在一個盤符下安裝了Node.js,並且使用了npm來安裝依賴模塊時,這些模塊會被安裝在該盤符下的node_modules目錄中。如果我們在另一個盤符下安裝了Node.js,並且使用了npm來安裝依賴模塊,這些依賴模塊會被安裝到該盤符下的node_modules目錄中。
當我們在代碼中使用了這些依賴模塊時,Node.js會自動查找當前目錄以及其上級目錄中的node_modules目錄來定位這些模塊。如果當前目錄和其上級目錄中都存在node_modules目錄,Node.js會選擇具有最接近當前目錄的node_modules目錄中的模塊。
八、小結
Node.js中的node_modules是一個託管庫,用於存放所有應用程序的依賴模塊。在開發過程中,我們經常會使用一些第三方工具庫來提高開發效率。node_modules方便了我們在本地管理和使用這些依賴模塊,並且在發布應用程序時,只需要將應用程序的代碼和node_modules目錄一起打包即可,使得部署變得更加簡便和快捷。
然而,node_modules也存在一些小細節需要我們注意,例如目錄過長、許可權不足、拷貝失敗等問題。我們需要了解這些問題,並且在遇到這些問題時高效地解決它們,才能讓我們的開發變得更加順暢。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286643.html