NodeJs 包管理工具的使用
1. 包管理工具概念介紹
1-1.包是什么
對于許多開發(fā)人員和程序員來說,Node.js是一種非常重要的技術(shù)。Node.js是一個(gè)基于Chrome V8引擎的JavaScript運(yùn)行時(shí)環(huán)境,它允許開發(fā)人員使用JavaScript編寫服務(wù)器端代碼。Node.js附帶了一個(gè)強(qiáng)大的包管理器——npm,使開發(fā)人員能夠輕松地使用和共享模塊和庫。
在Node.js中,包(Packages)是可以用來擴(kuò)展功能的軟件模塊。它們由NPM進(jìn)行管理,通過包管理器可以方便地安裝、更新和卸載包。Node.js的包生態(tài)系統(tǒng)非常龐大且活躍,擁有眾多的開源包可供使用。這些包可以提供各種功能,例如網(wǎng)絡(luò)開發(fā)、數(shù)據(jù)庫訪問、身份驗(yàn)證等等。
因此,可以說Node.js中的包對于開發(fā)人員來說是非常重要的,它們?yōu)殚_發(fā)者提供了豐富的工具和資源,極大地簡化了開發(fā)過程,提高了效率。但請注意,包本身并不是生命,而是一種技術(shù)工具和資源。
1-2.包管理工具
管理『包』的應(yīng)用軟件,可以對「包」進(jìn)行 下載安裝 , 更新 , 刪除 , 上傳 等操作
借助包管理工具,可以快速開發(fā)項(xiàng)目,提升開發(fā)效率
包管理工具是一個(gè)通用的概念,很多編程語言都有包管理工具,所以 掌握好包管理工具非常重要
1-3. 常用的包管理工具
Node.js常用的包管理工具是npm(Node Package Manager)。npm是隨同Node.js安裝的默認(rèn)包管理器,它使開發(fā)者可以方便地查找、安裝、更新和刪除Node.js模塊。除了npm,還有一些其他流行的包管理工具,如Yarn和pnpm,它們也可用于管理Node.js模塊。
2.npm
npm 全稱 Node Package Manager ,翻譯為中文意思是『Node 的包管理工具』
npm 是 node.js 官方內(nèi)置的包管理工具,是 必須要掌握住的工具
2-1.npm的安裝
node.js在安裝時(shí)會(huì)自動(dòng)安裝npm , 所以如果你已經(jīng)安裝了node.js,可以直接使用npm
可以通過 npm -v 查看版本號(hào)測試,如果顯示版本號(hào)說明安裝成功,反之安裝失敗
查看版本時(shí)可能與上圖版本號(hào)不一樣,不過不影響正常使用
2-2.npm基本使用
2-2-1.初始化
創(chuàng)建一個(gè)空目錄,然后以此目錄為工作目錄 啟動(dòng)命令行工具 ,執(zhí)行 npm init
npm init 命令的作用是將文件夾初始化為一個(gè)『包』, 交互式創(chuàng)建 package.json 文件
package.json 是包的配置文件,每個(gè)包都必須要有 package.json
package.json 內(nèi)容示例:
{ "name": "01_npm", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
屬性翻譯
{ "name": "01_npm", # 包的名字 "version": "1.0.0", # 包的版本 "description": "", # 包的描述 "main": "index.js", # 包的入口文件 "scripts": { # 腳本配置 "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", # 作者 "license": "ISC" # 開源證書 }
初始化的過程中還有一些注意事項(xiàng):
- package name ( 包名 ) 不能使用中文、大寫,默認(rèn)值是 文件夾的名稱 ,所以文件夾名稱也不 能使用中文和大寫
- version ( 版本號(hào) )要求 x.x.x 的形式定義, x 必須是數(shù)字,默認(rèn)值是 1.0.0
- ISC 證書與 MIT 證書功能上是相同的,關(guān)于開源證書擴(kuò)展閱讀http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
- package.json 可以手動(dòng)創(chuàng)建與修改
- 使用
npm init -y
或者npm init --yes
極速創(chuàng)建package.json
2-2-2.搜索包
搜索包的方式有兩種
- 命令行 『npm s/search 關(guān)鍵字』
- 網(wǎng)站搜索 網(wǎng)址是 https://www.npmjs.com/
2-2-3.下載安裝包
我們可以通過 npm install
和 npm i
命令安裝包
# 格式 npm install <包名> npm i <包名> # 示例 npm install uniq npm i uniq
運(yùn)行之后文件夾下會(huì)增加兩個(gè)資源
node_modules 文件夾
存放下載的包package-lock.json 包的鎖文件
,用來鎖定包的版本
安裝 uniq 之后, uniq 就是當(dāng)前這個(gè)包的一個(gè)
依賴包
,有時(shí)會(huì)簡稱為依賴
比如我們創(chuàng)建一個(gè)包名字為 A,A 中安裝了包名字是B,我們就說B 是 A 的一個(gè)依賴包
,也會(huì)說A 依賴 B
2-2-4. require 導(dǎo)入 npm 包基本流程
- 在當(dāng)前文件夾下 node_modules 中尋找同名的文件夾
- 在上級目錄中下的 node_modules 中尋找同名的文件夾,直至找到磁盤根目錄
2-3. 生產(chǎn)環(huán)境與開發(fā)環(huán)境
開發(fā)環(huán)境是程序員 專門用來寫代碼 的環(huán)境,一般是指程序員的電腦,開發(fā)環(huán)境的項(xiàng)目一般 只能程序員自己訪問
生產(chǎn)環(huán)境是項(xiàng)目 代碼正式運(yùn)行 的環(huán)境,一般是指正式的服務(wù)器電腦,生產(chǎn)環(huán)境的項(xiàng)目一般 每個(gè)客戶都可以訪問
2-4.生產(chǎn)依賴與開發(fā)依賴
我們可以在安裝時(shí)設(shè)置選項(xiàng)來區(qū)分 依賴的類型 ,目前分為兩類:
類型 | 命令 | 補(bǔ)充 |
---|---|---|
生產(chǎn)依賴 | npm i -S uniq npm i --save uniq | -S 等效于 --save, -S 是默認(rèn)選項(xiàng) 包信息保存在 package.json 中 dependencies 屬性 |
生產(chǎn)依賴 | npm i -D less npm i --save-dev less | -D 等效于 --save-dev 包信息保存在 package.json 中 devDependencies 屬性 |
舉個(gè)例子方便大家理解,比如說做蛋炒飯需要
大米 , 油 , 蔥 , 雞蛋 , 鍋 , 煤氣 , 鏟子
等
其中鍋 , 煤氣 , 鏟子
屬于開發(fā)依賴,只在制作階段使用
而大米 , 油 , 蔥 , 雞蛋
屬于生產(chǎn)依賴,在制作與最終食用都會(huì)用到
所以開發(fā)依賴
是只在開發(fā)階段使用的依賴包,而生產(chǎn)依賴
是開發(fā)階段和最終上線運(yùn)行階段都用到 的依賴包
2-5.全局安裝
我們可以執(zhí)行安裝選項(xiàng) -g 進(jìn)行全局安裝
npm i -g nodemon
全局安裝完成之后就可以在命令行的任何位置運(yùn)行 nodemon
命令
該命令的作用是 自動(dòng)重啟 node 應(yīng)用程序
說明:
- 全局安裝的命令不受工作目錄位置影響
- 可以通過 npm root -g 可以查看全局安裝包的位置
- 不是所有的包都適合全局安裝 , 只有全局類的工具才適合,可以通過 查看包的官方文檔來確定
- 安裝方式 ,這里先不必太糾結(jié)
2-5-1.修改 windows 執(zhí)行策略
windows 默認(rèn)不允許 npm 全局命令執(zhí)行腳本文件,所以需要修改執(zhí)行策略
- 以
管理員身份
打開 powershell 命令行 - 鍵入命令
set-ExecutionPolicy remoteSigned
- 鍵入 A 然后敲回車 ??
- 如果不生效,可以嘗試重啟 vscode
2-6.安裝包依賴
在項(xiàng)目協(xié)作中有一個(gè)常用的命令就是 npm i
,通過該命令可以依據(jù) package.json
和 package-lock.json
的依賴聲明安裝項(xiàng)目依賴
npm i npm install
2-7. 安裝指定版本的包
項(xiàng)目中可能會(huì)遇到版本不匹配的情況,有時(shí)就需要安裝指定版本的包,可以使用下面的命令的
## 格式 npm i <包名@版本號(hào)> ## 示例 npm i jquery@1.11.2
2-8. 刪除依賴
項(xiàng)目中可能需要?jiǎng)h除某些不需要的包,可以使用下面的命令
## 局部刪除 npm remove uniq npm r uniq ## 全局刪除 npm remove -g nodemon
2.9 配置命令別名
通過配置命令別名可以更簡單的執(zhí)行命令
配置 package.json 中的 scripts
屬性
{ . . . "scripts": { "server": "node server.js", "start": "node index.js", }, . . }
配置完成之后,可以使用別名執(zhí)行命令
npm run server npm run start
不過 start 別名比較特別,使用時(shí)可以省略 run
npm start
補(bǔ)充說明:
- npm start 是項(xiàng)目中常用的一個(gè)命令,一般用來啟動(dòng)項(xiàng)目
- npm run 有自動(dòng)向上級目錄查找的特性,跟 require 函數(shù)也一樣
- 對于陌生的項(xiàng)目,我們可以通過查看 scripts 屬性來參考項(xiàng)目的一些操作
3. cnpm
3-1.cnpm介紹
cnpm是一款基于Node.js的包管理工具,它是npm(Node Package Manager)的一個(gè)國內(nèi)鏡像源。由于某些原因,訪問npm的服務(wù)器可能會(huì)受到限制,cnpm則提供了一個(gè)在中國境內(nèi)更快、更穩(wěn)定的下載環(huán)境。
使用cnpm,開發(fā)者可以方便地安裝、發(fā)布以及管理Node.js的各種模塊和軟件包。它提供了與npm相同的命令行接口和功能,可以在大多數(shù)場景下直接替代npm使用。
cnpm的優(yōu)勢在于它的鏡像源位于中國大陸,減少了國際網(wǎng)絡(luò)傳輸?shù)难舆t,使得安裝和更新依賴更加高效。此外,cnpm還提供了一些額外的特性,例如支持私有模塊的管理和加速,以及通過淘寶鏡像下載模塊的機(jī)制。
需要注意的是,盡管cnpm在國內(nèi)使用廣泛,但它仍然是一個(gè)第三方工具,使用時(shí)需謹(jǐn)慎選擇可信的鏡像源,并確保代碼的安全性和可靠性。
3-2.安裝
我們可以通過 npm 來安裝 cnpm 工具
npm install -g cnpm --registry=https://registry.npmmirror.com
3-3.操作命令
功能 | 命令 |
---|---|
初始化 | cnpm init / cnpm init |
安裝包 | cnpm i uniq cnpm i -S uniq cnpm i -D uniq cnpm i -g nodemon |
安裝項(xiàng)目依賴 | cnpm i |
刪除 | cnpm r uniq |
3-4.npm 配置淘寶鏡像
用 npm 也可以使用淘寶鏡像,配置的方式有兩種
- 直接配置
- 工具配置
3-4-1.直接配置
執(zhí)行如下命令即可完成配置
npm config set registry https://registry.npmmirror.com/
3-4-2.工具配置
使用 nrm
配置 npm 的鏡像地址 npm registry manager
安裝 nrm
npm i -g nrm
修改鏡像
nrm use taobao
檢查是否配置成功(選做)
npm config list
檢查 registry 地址是否為 https://registry.npmmirror.com/ , 如果 是 則表明成功
4. yarn
4-1.yarn 介紹
Yarn 是一個(gè)用于管理 JavaScript 項(xiàng)目依賴關(guān)系的包管理器。它是由 Facebook 創(chuàng)建并開源的,旨在解決 npm 包管理器性能和安全性方面的一些問題.
4-2.yarn 特點(diǎn)
- 提高了安裝速度:Yarn 使用并行安裝的方法,可以更快地下載和安裝依賴包。
- 離線模式支持:當(dāng)你已經(jīng)安裝了所有依賴包后,即使沒有網(wǎng)絡(luò)連接,你仍然可以構(gòu)建項(xiàng)目。
- 更好的版本控制:Yarn 使用鎖文件(yarn.lock)確保多人開發(fā)環(huán)境下使用相同的依賴版本,避免了出現(xiàn)不可預(yù)期的依賴沖突。
- 更強(qiáng)的安全性:Yarn 使用 checksums 來驗(yàn)證每個(gè)安裝包的完整性,防止被篡改或污染。
- 更簡潔的輸出:Yarn 的命令行界面與 npm 相比更簡潔易讀。
4-3. yarn 安裝
我們可以使用 npm 安裝 yarn
npm i -g yarn
4-4.yarn 常用命令
功能 | 命令 |
---|---|
初始化 | yarn init / yarn init -y |
安裝包 | yarn add uniq 生產(chǎn)依賴 yarn add less --dev 開發(fā)依賴 yarn global add nodemon 全局安裝 |
刪除包 | yarn remove uniq 刪除項(xiàng)目依賴包 yarn global remove nodemon 全局刪除包 |
安裝項(xiàng)目依賴 | yarn |
運(yùn)行命令別名 | yarn <別名> # 不需要添加 run |
4-5. yarn 配置淘寶鏡像
可以通過如下命令配置淘寶鏡像
yarn config set registry https://registry.npmmirror.com/
可以通過 yarn config list
查看 yarn 的配置項(xiàng)
4-6. npm 和 yarn 選擇
大家可以根據(jù)不同的場景進(jìn)行選擇
- 個(gè)人項(xiàng)目
如果是個(gè)人項(xiàng)目, 哪個(gè)工具都可以 ,可以根據(jù)自己的喜好來選擇 - 公司項(xiàng)目
如果是公司要根據(jù)項(xiàng)目代碼來選擇,可以 通過鎖文件判斷 項(xiàng)目的包管理工具- npm 的鎖文件為 package-lock.json
- yarn 的鎖文件為 yarn.lock
包管理工具 不要混著用,切記,切記,切記
到此這篇關(guān)于NodeJs 包管理工具的使用的文章就介紹到這了,更多相關(guān)NodeJs 包管理工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js實(shí)現(xiàn)簡單管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Node.js實(shí)現(xiàn)簡單管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09在Ubuntu系統(tǒng)上安裝Ghost博客平臺(tái)的教程
這篇文章主要介紹了在Ubuntu系統(tǒng)上安裝Ghost博客平臺(tái)的教程,Ghost博客平臺(tái)以Node.js寫成,需要的朋友可以參考下2015-06-06使用NVM實(shí)現(xiàn)不同nodejs版本的自由切換
在工作中,我們可能需要同時(shí)進(jìn)行多個(gè)不同NodeJS版本的項(xiàng)目開發(fā),這種情況下,對于維護(hù)多個(gè)版本的node將會(huì)是一件非常麻煩的事情,NVM就是為解決這個(gè)問題而產(chǎn)生的,本文給出了下載、安裝及使用方法,需要的朋友可以參考下2024-02-02node.js使用express-jwt報(bào)錯(cuò):expressJWT?is?not?a?function解決
這篇文章主要給大家介紹了關(guān)于node.js使用express-jwt報(bào)錯(cuò):expressJWT?is?not?a?function解決的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03npm?install?-g?@vue/cli常見問題解決匯總
這篇文章主要給大家介紹了關(guān)于npm?install?-g?@vue/cli常見問題解決的相關(guān)資料,文中通過實(shí)例代碼將解決的方式介紹的非常詳細(xì),對遇到這個(gè)問題的朋友具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-08-08Node.js?實(shí)現(xiàn)簡單爬蟲的示例代碼
本文主要介紹了Node.js?實(shí)現(xiàn)簡單爬蟲,爬取美食網(wǎng)站的菜品標(biāo)題和圖片鏈接,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02