參考: https://www.bilibili.com/video/BV1gM411W7ex/ 視頻
包管理工具
一、概念介紹
1.1 包是什麼
『包』英文單詞是 package ,代表了一組特定功能的源碼集合
1.2 包管理工具
管理『包』的應用軟件,可以對「包」進行 下載安裝 , 更新 , 刪除 , 上傳 等操作
藉助包管理工具,可以快速開發項目,提升開發效率
包管理工具是一個通用的概念,很多編程語言都有包管理工具,所以 掌握好包管理工具非常重要
1.3 常用的包管理工具
下面列舉了前端常用的包管理工具
npm
yarn
cnpm
二、npm
npm 全稱 Node Package Manager ,翻譯爲中文意思是『Node 的包管理工具』
npm 是 node.js 官方內置的包管理工具,是 必須要掌握住的工具
2.1 npm 的安裝
node.js 在安裝時會 自動安裝 npm ,所以如果你已經安裝了 node.js,可以直接使用 npm
可以通過 npm -v 查看版本號測試,如果顯示版本號說明安裝成功,反之安裝失敗
2.2 npm 基本使用
2.2.1 初始化
創建一個空目錄,然後以此目錄作爲工作目錄 啓動命令行工具 ,執行 npm init
npm init 命令的作用是將文件夾初始化爲一個『包』, 交互式創建 package.json 文件
package.json 是包的配置文件,每個包都必須要有 package.json
package.json 內容示例:
{
"name": "01_npm",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
屬性翻譯
{
"name": "1-npm", #包的名字
"version": "1.0.0", #包的版本
"description": "", #包的描述
"main": "index.js", #包的入口文件
"scripts": { #腳本配置
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", #作者
"license": "ISC" #開源證書
}
初始化的過程中還有一些注意事項:
- package name ( 包名 ) 不能使用中文、大寫,默認值是 文件夾的名稱 ,所以文件夾名稱也不能使用中文和大寫
- version ( 版本號 )要求 x.x.x 的形式定義, x 必須是數字,默認值是 1.0.0
- ISC 證書與 MIT 證書功能上是相同的,關於開源證書擴展閱讀 http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
- package.json 可以手動創建與修改
- 使用 npm init -y 或者 npm init --yes 極速創建 package.json
2.2.2 搜索包
搜索包的方式有兩種
- 命令行 『npm s/search 關鍵字』
- 網站搜索(常用) 網址是 https://www.npmjs.com/
2.2.3 下載安裝包
我們可以通過 npm install 或 npm i 命令安裝包
# 格式
npm install <包名>
npm i <包名>
# 示例
npm install uniq
npm i uniq
運行之後文件夾下會增加兩個資源
- node_modules 文件夾 存放下載的包
- package-lock.json 包的鎖文件 ,用來鎖定包的版本
安裝 uniq 之後, uniq 就是當前這個包的一個 依賴包 ,有時會簡稱爲 依賴
比如我們創建一個包名字爲 A,A 中安裝了包名字是 B,我們就說 B 是 A 的一個依賴包 ,也會說 A 依賴 B
2.2.4 require 導入 npm 包基本流程
const uniq = require('uniq');
這句的查找:
- 在當前文件夾下 node_modules 中尋找同名的文件夾
- 在上級目錄中下的 node_modules 中尋找同名的文件夾,直至找到磁盤根目錄
2.3 生產環境與開發環境
開發環境是程序員 專門用來寫代碼 的環境,一般是指程序員的電腦,開發環境的項目一般 只能程序員自
己訪問
生產環境是項目 代碼正式運行 的環境,一般是指正式的服務器電腦,生產環境的項目一般 每個客戶都可
以訪問
2.4 生產依賴與開發依賴
我們可以在安裝時設置選項來區分 依賴的類型 ,目前分爲兩類:
2.5 全局安裝
我們可以執行安裝選項 -g 進行全局安裝
全局安裝完成之後就可以在命令行的任何位置運行 nodemon 命令
該命令的作用是 自動重啓 node 應用程序
說明:
全局安裝的命令不受工作目錄位置影響
可以通過 npm root -g
可以查看全局安裝包的位置
不是所有的包都適合全局安裝 , 只有全局類的工具才適合,可以通過 查看包的官方文檔來確定安裝方式 ,這裏先不必太糾結.
** 如何修改npm默認全局安裝路徑步驟 **
參考 https://www.cnblogs.com/lyh233/p/16265929.html
說明一點:正常情況下,其實沒必要修改npm全局安裝路徑。
2.5.1 修改 windows 執行策略
windows 默認不允許 npm 全局命令執行腳本文件,所以需要修改執行策略
- 以 管理員身份 打開 powershell 命令行
- 鍵入命令 set-ExecutionPolicy remoteSigned
- 鍵入 A 然後敲回車
- 如果不生效,可以嘗試重啓 vscode
2.5.2 環境變量 Path
Path 是操作系統的一個環境變量,可以設置一些文件夾的路徑,在當前工作目錄下找不到可執行文件時,就會在環境變量 Path 的目錄中挨個的查找,如果找到則執行,如果沒有找到就會報錯。
補充說明:
如果希望某個程序在任何工作目錄下都能正常運行,就應該將該程序的所在目錄配置到環境變量 Path 中
windows 下查找命令的所在位置
cmd 命令行 中執行 where nodemon
powershell命令行 執行 get-command nodemon
配置path圖:
2.6 安裝包依賴
在項目協作中有一個常用的命令就是 npm i ,通過該命令可以依據 package.json 和 package-lock.json 的依賴聲明安裝項目依賴。
npm i
npm install
node_modules 文件夾大多數情況都不會存入版本庫。
應用場景:從svn或git 拉下來的node源代碼,一般有package.json 和 package-lock.json,使用 npm i
命令,會下載依賴的包(查看 node_modules 文件夾)。
2.7 安裝指定版本的包
項目中可能會遇到版本不匹配的情況,有時就需要安裝指定版本的包,可以使用下面的命令的
## 格式
npm i <包名@版本號>
## 示例
npm i [email protected]
2.8 刪除依賴
項目中可能需要刪除某些不需要的包,可以使用下面的命令
## 局部刪除
npm remove uniq
npm r uniq
## 全局刪除
npm remove -g nodemon
2.9 配置命令別名
通過配置命令別名可以更簡單的執行命令
配置 package.json 中的 scripts 屬性
{
.
.
.
"scripts": {
"server": "node server.js",
"start": "node index.js",
},
.
.
}
配置完成之後,可以使用別名執行命令
npm run server
npm run start
不過 start 別名比較特別,使用時可以省略 run
npm start
補充說明:
- npm start 是項目中常用的一個命令,一般用來啓動項目
- npm run 有自動向上級目錄查找的特性,跟 require 函數也一樣
- 對於陌生的項目,我們可以通過查看 scripts 屬性來參考項目的一些操作
三、cnpm
3.1 介紹
cnpm 是一個淘寶構建的 npmjs.com 的完整鏡像,也稱爲『淘寶鏡像』,網址 https://npmmirror.com/
cnpm 服務部署在國內 阿里雲服務器上 , 可以提高包的下載速度
官方也提供了一個全局工具包 cnpm ,操作命令與 npm 大體相同
3.2 安裝
我們可以通過 npm 來安裝 cnpm 工具
npm install -g cnpm --registry=https://registry.npmmirror.com
3.3 操作命令
3.4 npm 配置淘寶鏡像
用 npm 也可以使用淘寶鏡像,配置的方式有兩種
- 直接配置
- 工具配置(推薦)
3.4.1 直接配置
執行如下命令即可完成配置
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/ , 如果 是 則表明成功 - 切換回來(選做)
nrm use npm - 查看(選做)
nrm ls
補充說明:
- 建議使用第二種方式 進行鏡像配置,因爲後續修改起來會比較方便
- 雖然 cnpm 可以提高速度,但是 npm 也可以通過淘寶鏡像進行加速,所以 npm 的使用率還是高於 cnpm
關於npm的國內鏡像源
一、說明
在前端開發的時候使用國外的鏡像源速度很慢並且容易下載失敗,有時候需要嘗試多次纔有可能下載成功,很麻煩,因此可以切換爲國內鏡像源,下面爲常用的npm,yarn,pnpm切換國內鏡像源(以淘寶爲例)的方式。
二、NPM切換鏡像源
- 查看當前的鏡像源。
npm config get registry
- 設置爲淘寶源
npm config set registry https://registry.npm.taobao.org
- 還原默認源
npm config set registry https://registry.npmjs.org/
- 臨時使用
上面那種設置是全局的,以後每次都會自動讀取已經設置好的源,如果只是一次性使用,可以使用下面的命令
npm --registry https://registry.npm.taobao.org install XXX(模塊名)
- 使用cnpm
cnpm是一個命令,用它來代替npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install XXX(模塊名)
- 使用nrm
npm install -g nrm
nrm use taobao
nrm ls # 查看當前可用源命令
三、Yarn 切換鏡像源
- 查看當前鏡像源
yarn config get registry
- 設置爲淘寶鏡像源
yarn config set registry https://registry.npmmirror.com
- 切回原鏡像源
yarn config set registry https://registry.yarnpkg.com
四、pnpm 切換鏡像源
- 查看當前鏡像源
pnpm config get registry
- 設置爲淘寶鏡像源
pnpm config set registry https://registry.npmmirror.com
- 切回原鏡像源
pnpm config set registry https://registry.npmjs.org
————————————————
版權聲明:本文爲CSDN博主「一枚碼農404」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012970287/article/details/131100890