搜尋
首頁web前端js教程了解兩個強大的Node套件管理器:npm 和 yarn

了解兩個強大的Node套件管理器:npm 和 yarn

Aug 25, 2022 am 11:00 AM
node.jsnodenpmyarn套件管理器

這篇文章帶大家了解一下Node.js的兩個強大套件管理器:npm 和 yarn,希望對大家有幫助!

了解兩個強大的Node套件管理器:npm 和 yarn

學習Node的第一步就是要了解node的套件管理器npm,對於npm相信大家並不陌生,因為我們常用它去下載一些套件資源

但因為npm的資源庫(https: //www.npmjs.com/)在國外,使用它下載資源的速度比較慢,於是就出現了yarn這些第三方node套件管理器以及國內的跟npm倉庫同步更新的淘寶鏡像(cnpm)

接下來我們就將深入去學習這些內容,讓我們開始吧!

Node系列專欄開始更新了,追蹤博主,訂閱專欄,學習Node不迷路!

一、npm的使用

#npm是什麼

使用npm前首先要了解什麼是npm,在Node系列專欄的第一篇文章【Node.js | 從前端到全棧的必經之路】中提到 npmNode的開源倉庫,並且是全球最大的開源倉庫

這個倉庫位址是:https://www.npmjs.com/

截至2020年3月17日,npm為大約1200萬開發人員提供了130萬個軟體包,這些開發人員每月下載這些軟體包達750億次

要想要去下載使用npm倉庫裡面的資源可以使用npm的指令npm開頭的,如npm i axios 下載axios)或使用其它第三方的指令(第三方的Node套件管理器 ),如yarn等

官方說法:npmNodeJS的套件管理和分發工具

套件管理就體現在它是個NodeJS的倉庫,存放並管理著NodeJS的各種軟體包

分發工具就體現在使用npm的指令去下載npm倉庫裡的套件

在我們設定 NodeJS環境時,npm指令模組是隨著NodeJS一起安裝的,我們可以透過終端機執行npm -v 查看安裝的版本:

了解兩個強大的Node套件管理器:npm 和 yarn

但如果預設安裝的npm版本太老,你也可以自己手動安裝更新npm

npm i npm@latest -g

@latest 代表安裝最新版本,-g代表全域安裝,這些npm指令將在後面講到

上面可以發現一個神奇的事情,我們正在透過npm安裝npm,自己安裝自己?

這其實很好理解,npm的指令模組也是作為一個包存放於npm這個倉庫中的,並且這個包的名字就叫 npm,請參閱npm地址:https://www.npmjs.com/package/npm

了解兩個強大的Node套件管理器:npm 和 yarn

##所以

我們一般稱呼的npm都只是指npm的這個指令模組(這個名為npm的套件)

#但其實

npm這個字就是代指了npm指令模組,也代指了npm這個NodeJS開源倉庫本身 所以就有了我們在
npm(這個npm代表NodeJS的開源倉庫)下載npm(這個npm代表一個名為npm的這個包,這個包是npm的指令模組)的說法

##npm常用指令

npm

的指令非常多,這裡只列舉常用的,更多資訊可見npm官方文件

  • npm init

    :產生package.json

    了解兩個強大的Node套件管理器:npm 和 yarn

  • npm install

    下載package.json中記錄的所有資源

  • ##npm install 套件名
  • 下載指定的套件到目前目錄下

  • #npm uninstall 套件名稱
  • 卸載目前目錄下指定的套件

  • npm update 套件名稱更新目前目錄下指定的套件,不加套件名稱則更新目前目錄下所有套件

  • npm outdated 套件名稱檢查目前目錄下指定套件是否過時,不加套件名稱則檢查目前目錄下所有套件

  • npm info 套件名稱取得目前目錄下套件的詳細資訊

  • npm list查看目前目錄下安裝的所有套件及其依賴並顯示版本號碼list可簡寫為ls

  • npm list 套件名稱查看目前目錄下安裝的指定套件的版本號碼list可簡寫為ls

#幾點補充:

  1. install可簡寫為i,如:npm install axios可簡寫為npm i axios

  2. uninstall 可簡寫為un

  3. 在套件名稱後面加上@ 符可指定套件的版本,如:npm i md5@1下載1版本的md5,npm i md5@latest表示下載最新版本的md5

#npm指令後綴

  • #-g:指定全域環境

    npm指令預設是在目前目錄下操作,加上-g是指定在全域環境下操作,如上面提到的全域安裝npm最新版:npm i npm@latest -g,這樣在任何目錄下都能使用npm

  • --save可簡寫為-s : 指定生產環境 下的依賴(記錄在dependencies中)

    npm5版本之後預設是--save,如安裝在生產環境和開發環境都需要用到的axios:npm i axios -s

  • #--save-dev可簡寫為-D:指定開發環境下的依賴(記錄在devDependencies中)

    如安裝生產環境下不需要使用的babel(僅在開發環境下使用的到):npm i babel -D

  • #--save-prod 可簡寫為-P:與--save相同

  • --save -optional可簡寫為-O:指定可選依賴(記錄在optionalDependencies

  • #--no-save:不會記錄在package.json

關於-g,--save,--save-dev的具體作用和區別可看我的這篇文章:npm install -g/–save/–save-dev的區別

npm指令後綴也可以放到套件名稱的前面:npm i -g npm@latest

##依賴套件管理

npm# 中,熟悉的依賴是:dependenciesdevDependencies

#除此之外,其實還有包括:

  • peerDependencies,
  • optionalDependencies
  • bundledDependencies / bundleDependencies
在內的幾個依賴,這些都是在

package.json中進行記錄的:

了解兩個強大的Node套件管理器:npm 和 yarn

上面我們說

npm指令後綴時提到了這幾種依賴,這裡詳細說一下它們代表什麼:

dependenciesdevDependencies

可查看我的另一篇文章: npm install -g/–save/–save-dev的差異

#peerDependencies

可查看大佬的文章:一文搞懂peerDependencies

#optionalDependencies

可選依賴,如果有一些依賴套件即使安裝失敗,專案仍然能夠運行或希望npm繼續運行,就可以使用

optionalDependencies,另外optionalDependencies會覆寫dependencies中的同名依賴包,所以不要在兩個地方都寫

bundledDependencies / bundleDependencies

打包依賴,

bundledDependencies是一個包含依賴套件名稱的陣列對象,在發佈時會將這個物件中的套件打包到最終的發布包裡,數組裡面的包必須先在devDependenciesdependencies聲明過,否則打包會報錯

package.json中需要注意的包版本问题

通过npm下载的所有包的版本信息都会记录在package.json

在运行npm i时就会根据package.json中记录的包信息进行下载,它的下载规则如下:

  • 包版本以^开头时(默认情况),会锁定大版本

       // package.json
      "dependencies": {
        "md5": "^2.1.0" // ^开头的
      },

    通过npm i将会安装md5 2.x.x的最新版本(2大版本下的最新版本),并不一定是2.1.0,还可能是2.3.0

  • 包版本以~开头时,会锁定到第二个大版本

       // package.json
      "dependencies": {
        "md5": "~2.1.0"
      },

    通过npm i将会安装md5 2.1.x的最新版本(2.1版本下的最新版本),并不一定是2.1.0,还可能是2.1.1

  • 包版本为*,会锁定到最新版本

      // package.json
      "dependencies": {
        "md5": "*"
      },

    通过npm i将会安装md5的最新版本

  • 包版本前不带前缀,会锁定到指定版本

       // package.json
      "dependencies": {
        "md5": "2.1.0"
      },

    通过npm i将会安装md5的2.1.0版本

解决npm速度慢的问题

因为npm仓库在国外,我们在国内使用npm指令下载这个国外仓库的内容速度会比较慢

这时我们就可以运行以下指令将npm的仓库源切换到国内的淘宝镜像(cnpm) 的源:

npm config set registry https://registry.npmmirror.com

使用npm config get registry查看当前源:

了解兩個強大的Node套件管理器:npm 和 yarn

往后再使用npm时就会自动从国内的淘宝镜像仓库下载了,速度就会很快

淘宝镜像之前的源地址为http://registry.npm.taobao.org,现在更改为了http://registry.npmmirror.com,查看详情

但我们这样通过修改npm的配置进行源的切换难免会有点麻烦,我们可以全局安装一个nrm来帮助我们快速的切换npm

使用nrm快速切换npm源

全局安装nrm

npm install -g nrm

执行nrm ls查看可切换的npm源

了解兩個強大的Node套件管理器:npm 和 yarn

使用npm use 切换源,如切换到淘宝源:nrm use taobao

了解兩個強大的Node套件管理器:npm 和 yarn

使用nrm test 源名测试相应源的响应时间:

了解兩個強大的Node套件管理器:npm 和 yarn

可以看到淘宝源的响应速度要比npm的默认源快很多

中国npm镜像:cnpm

cnpm是一个完整的npmjs.org镜像,可以用它代替官方版本

cnpm与官方版本的同步频率为10分钟一次,cnpm官网

下载cnpm

 npm install -g cnpm --registry=https://registry.npmmirror.com

cnpm就是淘宝镜像,上面我们使用淘宝镜像只是将npm的源更改为淘宝镜像(cnpm)的源(这个源其实就是指仓库的地址),之后还是通过npm指令进行使用

而这里是直接下载cnpm这个完整镜像,之后就可以使用cnpm指令而不是npm指令:

cnpm installcnpm i axios -g

// ....

cnpm的指令与npm的指令完全相同,使用时直接使用cnpm代替npm就行

二、yarn的使用

yarn是Facebook发布的一款依赖管理工具,它比npm更快、更高效

安装:

npm install -g yarn

更新yarn:

yarn set version latest
yarn set version from sources

优点

  • 速度超快
    yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快

  • 超級安全性
    在執行程式碼之前,yarn 會透過演算法校驗每個安裝套件的完整性

#yarn常用指令

  • #yarn init:初始化項目,產生package .json文件,生成步驟與npm init大致相同

    了解兩個強大的Node套件管理器:npm 和 yarn

  • yarn help:顯示指令清單

  • yarn install:下載package.json中記錄的所有資源,可簡寫為yarn

  • #yarn add 套件名稱下載指定的套件到目前目錄下

  • yarn remove 套件名稱: 卸載目前目錄下指定的套件

  • yarn upgrade 套件名稱更新目前目錄下指定的包,包名後可加@指定版本號來指定需要更新到的版本

yarn指令後綴

  • --dev#:指定開發環境下的依賴( devDependencies),簡寫為-D
  • #--peer:指定核心依賴 peerDependencies )
  • --optional:指定可選依賴optionalDependencies

結語

本篇文章介紹了npm#和yarn,以及npm衍生出的nrmcnpm

部落客一直使用的是npm nrm切換來源的組合,因為這不僅能保證速度快,能夠方便的切換來源,還不用下載像cnpmyarn這些額外的套件

npmyarn的內容都比較多,本篇文章只是講解了最常用的內容,如果想要了解更多可移步到對應的官網進行查看

更多node相關知識,請訪問:nodejs 教程

以上是了解兩個強大的Node套件管理器:npm 和 yarn的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除
JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。