我們之前在安裝node.js的時候,默認已經安裝npm工具。
npm工具是什么?全稱 node package management, 是node.js的包管理工具。那么,對于一個編程語言來講,包是什么?
包 Package 是什么?
如果你對Java有一定了解,你一定知道Jar包,那么node.js中包的概念跟java中的jar包概念類似。
對于企業開發來講,如果需要提升效率,就需要把很多公共的模塊進行封裝,就形成了包的概念。而對于編程語言來講,為了推廣語言本身,也需要提供強大的包的功能。這樣對于開發人員來講,很多功能的實現只需要引入相關的包,在包的基礎上再做開發就好了。避免了不必要的工作,提升了效率。
以Java為例,業界有兩個包相關的依賴管理工具,Marven和Gradle。只需要相關文件中寫入需要引入的jar包,運行命令后會,會自動下載這些jar包。很多年前,我記得開發的時候,大家都是手動下載了jar包放在一個目錄,然后包含在項目中。
那么后面為什么不行了?因為需要加載的jar包實在太多了,而且每個包還有版本,不同的包不同的版本還不兼容;當你需要使用一個包時,這個包還需要另外一個包作為依賴。這時候大家發現手動下載已經根本行不通了。于是,包管理工具應運而生。在java中,只需要將所需要的jar包寫在相關文件中,運行Marven
或者Gradle, 就會自動下載這些jar包,依賴問題也會一并解決。
包從哪里來?
包存在倉庫repository里,倉庫在哪?誰在維護倉庫?誰能保證我從倉庫中下載的文件就一定是正確的,會不會有惡意代碼?
在講npm之前,我還是以java為例,畢竟java出現的早,可能朋友們對java比較了解。比如Marven有自己的倉庫,Spring也有自己的倉庫。國內連國外網絡會比較處理,像阿里也建了自己的倉庫,方便朋友們下載。
那么實際開發過程中,對于企業而言,很多時候會建自己的內部倉庫,這樣就不用考慮網絡問題了。
什么是npm?
上面是npm官網 (https://www.npmjs.com/)關于自己的介紹。是一個開源的node.js包管理工具。非常重要的一點是,npm.Inc這個公司在維護所有的包,所以我們不用擔心通過npm下載的包會有什么問題。
npm常用命令:
獲取npm版本
npm -v
安裝
npm install <package名稱>
這里有一個-g參數來控制是否為全局安裝。全局安裝的意思是指,當前安裝的包會安裝在node.js的全局包安裝路徑中,所有的node.js項目都可以使用。如果不加 -g ,安裝的包只能在當前的node.js項目中使用。
全局包安裝路徑顯示 (npm root -g)
D:\Projects>npm root -g
D:\Program Files\nodejs\node_global\node_modules
卸載
npm uninstall <package名稱>
如果需要全局卸載,也要加上-g 參數
更新
npm update <package名稱>
全局更新,同樣需要加上-g
包的描述 package.json
每個安裝好的包在根目錄下都有一個package.json文件,是整個包的描述。
package.json文件包含了很多信息,包括name, preferglobal, description, version, bugs, license, repository, keywords, dependencies等等。
其中的dependecies依賴關系指的是,當前的包所依賴的其他的包,由包的名稱和版本號組成。
關于node.js包管理的信息就到這里,如果朋友們有什么問題,歡迎留言討論。
敬請關注,后面還會有更多的node.js更新。