nodejs學習03——包管理工具npm

參考: 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" #開源證書
}

初始化的過程中還有一些注意事項:

  1. package name ( 包名 ) 不能使用中文、大寫,默認值是 文件夾的名稱 ,所以文件夾名稱也不能使用中文和大寫
  2. version ( 版本號 )要求 x.x.x 的形式定義, x 必須是數字,默認值是 1.0.0
  3. ISC 證書與 MIT 證書功能上是相同的,關於開源證書擴展閱讀 http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
  4. package.json 可以手動創建與修改
  5. 使用 npm init -y 或者 npm init --yes 極速創建 package.json
2.2.2 搜索包

搜索包的方式有兩種

  1. 命令行 『npm s/search 關鍵字』
  2. 網站搜索(常用) 網址是 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'); 這句的查找:

  1. 在當前文件夾下 node_modules 中尋找同名的文件夾
  2. 在上級目錄中下的 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 全局命令執行腳本文件,所以需要修改執行策略

  1. 以 管理員身份 打開 powershell 命令行
  2. 鍵入命令 set-ExecutionPolicy remoteSigned
  3. 鍵入 A 然後敲回車
  4. 如果不生效,可以嘗試重啓 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

  1. 安裝 nrm
    npm i -g nrm
  2. 修改鏡像
    nrm use taobao
  3. 檢查是否配置成功(選做)
    npm config list
    檢查 registry 地址是否爲 https://registry.npmmirror.com/ , 如果 是 則表明成功
  4. 切換回來(選做)
    nrm use npm
  5. 查看(選做)
    nrm ls

補充說明:

  1. 建議使用第二種方式 進行鏡像配置,因爲後續修改起來會比較方便
  2. 雖然 cnpm 可以提高速度,但是 npm 也可以通過淘寶鏡像進行加速,所以 npm 的使用率還是高於 cnpm

關於npm的國內鏡像源

一、說明

在前端開發的時候使用國外的鏡像源速度很慢並且容易下載失敗,有時候需要嘗試多次纔有可能下載成功,很麻煩,因此可以切換爲國內鏡像源,下面爲常用的npm,yarn,pnpm切換國內鏡像源(以淘寶爲例)的方式。

二、NPM切換鏡像源

  1. 查看當前的鏡像源。
npm config get registry
  1. 設置爲淘寶源
npm config set registry https://registry.npm.taobao.org
  1. 還原默認源
npm config set registry https://registry.npmjs.org/
  1. 臨時使用
    上面那種設置是全局的,以後每次都會自動讀取已經設置好的源,如果只是一次性使用,可以使用下面的命令
npm --registry https://registry.npm.taobao.org install XXX(模塊名)

  1. 使用cnpm
    cnpm是一個命令,用它來代替npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install XXX(模塊名)
  1. 使用nrm
npm install -g nrm
nrm use taobao
nrm ls  # 查看當前可用源命令

三、Yarn 切換鏡像源

  1. 查看當前鏡像源
yarn config get registry
  1. 設置爲淘寶鏡像源
yarn config set registry https://registry.npmmirror.com
  1. 切回原鏡像源
yarn config set registry https://registry.yarnpkg.com

四、pnpm 切換鏡像源

  1. 查看當前鏡像源
pnpm config get registry
  1. 設置爲淘寶鏡像源
pnpm config set registry https://registry.npmmirror.com
  1. 切回原鏡像源
pnpm config set registry https://registry.npmjs.org

————————————————
版權聲明:本文爲CSDN博主「一枚碼農404」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012970287/article/details/131100890

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章