前端工程化之包管理器

在這里插入圖片描述

在這里插入圖片描述

這里寫目錄標題

  • 什么是包
  • 包管理工具
  • 常用的包管理工具
    • npm
      • npm 基本使用
        • 初始化
        • 搜索工具包
        • 下載安裝包
        • 導入 npm 包基本流程
        • 生產依賴與開發依賴
        • 全局安裝
        • 安裝全部依賴
        • 安裝指定版本的包
        • 刪除依賴包
    • cnpm
      • 全局安裝
      • nrm 的使用
    • yarn
      • 全局安裝
      • yarn 常用命令
    • pnpm 【推薦使用】
    • 全局安裝

什么是包

● 包是一組特定功能的代碼集合,英文為:package
● 包,本質上是一種文件系統的集成描述形式,屬于模塊化的一種超集體現。

包管理工具

集中式管理『包』的應用軟件,可以對「包」進行 下載,安裝 , 更新 , 刪除 , 上傳 等操作
借助包管理工具,可以快速開發項目,提升開發效率
包管理工具是一個通用的概念,很多編程語言都有包管理工具

常用的包管理工具

  • npm ( node js 內置 官網)
  • pnpm
  • yarn
  • cnpm

npm

在這里插入圖片描述

npm 全稱 Node Package Manager ,翻譯為中文意思是『Node 的包管理工具』
npm 是 node.js 官方內置的包管理工具,是必須要掌握住的工具
node.js 在安裝時會 自動安裝 npm
可以通過 npm -v 查看版本號測試,如果顯示版本號說明安裝成功,反之安裝失敗

npm 基本使用

初始化
  • 創建一個空目錄,然后以此目錄作為工作目錄 啟動命令行工具 ,執行 npm init
  • npm init 命令的作用是將文件夾初始化為一個『包』, 交互式創建 package.json 文件
  • package.json 是包的配置文件,每個包都必須要有 package.json
  • package.json 內容示例:
{
"name": "1-npm", #包的名字
"version": "1.0.0", #包的版本
"description": "", #包的描述
"main": "index.js", #包的入口文件
"scripts": { #腳本配置
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", #作者
"license": "ISC" #開源證書
}

在這里插入圖片描述

搜索工具包
  1. 命令行 『npm s / search 包名』
  2. 網站搜索 網址是 https://www.npmjs.com/ (推薦
下載安裝包

我們可以通過 npm installnpm i 命令安裝包

如:

npm install uniq --save   或   npm i uniq -S

運行之后文件夾下會增加兩個資源

  • node_modules 文件夾 存放下載的包

  • package-lock.json 包的鎖文件 ,用來鎖定包的版本

  • 關于package-lock.json 中的版本限制的說明:

    • ^:鎖定主版本號,接受所有以1開頭的版本,如:1.0.2等,但不包括2.0.0。
    • ~:允許安裝小版本的更新,但不包括次要版本的更改。~1.0.1 允許 1.0.x。
    • >:允許比指定版本更高的版本,但不包括指定版本本身。>1.0.1 允許 1.0.2, 1.1.0, 2.0.0等。
    • <:允許比指定版本更低的版本。<1.0.1 允許 1.0.0 及更早的版本。
    • >=:允許指定版本及更高的版本。>=1.0.1 允許 1.0.1 及其之后的版本。
    • <=:允許指定版本及更低的版本。<=1.0.1 允許 1.0.1 及其之前的版本。
    • *:允許任何版本,這種情況下最不限制,但也最不穩定。
  • 如果沒有任何符號,只寫版本號,如 1.0.1,這意味著嚴格要求安裝這個特定版本。


導入 npm 包基本流程
  1. 在當前文件夾下 node_modules 中尋找同名的文件夾
  2. 在上級目錄中下的 node_modules 中尋找同名的文件夾,直至找到磁盤根目錄

生產依賴與開發依賴

我們可以在安裝時設置選項來區分 依賴的類型 ,目前分為兩類:

類別命令描述說明
生產依賴npm i -S 包名

npm i --save 包名
-S 等效于 --save, -S 是默認選項
包信息保存在 package.json 中 dependencies 屬性
開發環境、生產環境都要用的,是生產依賴包。
開發依賴npm i -D 包名

npm i --save-dev 包名
-D 等效于 --save-dev

包信息保存在 package.json 中 devDependencies 屬性
只有開發環境用到的包,是開發依賴包。

全局安裝

我們可以執行安裝選項 -g 進行全局安裝

npm install -g 包名
  • 全局安裝的命令不受工作目錄位置影響
  • 可以通過 npm root -g 可以查看全局安裝包的位置
  • 通過 npm list -g 查看全局包的列表
  • 不是所有的包都適合全局安裝,通常是命令行工具包,才適合全局安裝。

安裝全部依賴

在項目協作中有一個常用的命令就是 npm i ,通過該命令可以依據 package.jsonpackagelock.json 的依賴聲明安裝項目依賴
若只想安裝生產依賴,可以使用npm install --prodnpm i --omit=dev

npm i
或
npm install

安裝指定版本的包

項目中可能會遇到版本不匹配的情況,有時就需要安裝指定版本的包,可以使用下面的命令的

## 格式
npm i <包名@版本號>## 示例
npm i jquery@1.11.2

查看一個包的所有版本

npm view 包名 versions

刪除依賴包
## 局部刪除
npm remove 包名
npm r 包名
## 全局刪除
npm remove -g 包名
npm r -g 包名

以上就是對包管理工具進行了一個初步的介紹,其余的幾種包管理工具的核心,概念和使用方法都是大同小異,只要將 npm 掌握了,其它的也就很容易上手了。


cnpm

在這里插入圖片描述
cnpm 是一個 npm 的替代工具,cnpm 服務器部署在國內,主要用于在國內優化 npm 包的下載速度,cnpm 由淘寶團隊創建和維護,又稱:淘寶鏡像。

  • npm原始服務器地址:https://registry.npmjs.org/
  • cnpm服務器地址為:https://registry.npmmirror.com/
  • cnpm:官網

全局安裝

  • 對于cnpm 的使用有兩種方式:
    • 第一種方式:安裝 cnpm 包管理器
 npm install cnpm -g --registry=https://registry.npmmirror.com

該種方式是全局安裝了 cnpm 包,并且切換了包的下載源,以后全局用 cnpm 命令即可,cnpm兼容npm命令

  • 第二種方式:僅修改npm服務器地址
npm config set registry https://registry.npmmirror.com

該種方式只是修改了npm服務器地址,以后還是用npm命令
npm 原始遠程服務器地址為 https://registry.npmjs.org/

查看下載服務器源地址

npm config get registry

nrm 的使用

nrm(NPM Registry Manager)是一個用于管理npm注冊表的工具,方便用戶在多個npm注冊表之間切換。它適用于在不同的npm源之間快速切換

  • 安裝
npm install nrm -g
  • 列出可用地址
nrm ls
  • 添加新地址
nrm add 別名 URL
  • 切換到指定地址
nrm use 別名
  • 測試各地址速度
nrm test
  • 刪除地址
nrm del 別名

yarn

在這里插入圖片描述
yarn是一個快速、可靠的依賴管理工具,由 Facebook 在 2016 年開發,yarn的優勢如下:

  • 速度:yarn使用并行安裝機制來加快速度。
  • 緩存:yarn會緩存每個下載過的包,無需重復下載。
  • 界面:yarn提供更詳細的輸出,包括進度條等等。
  • 安全:yarn會通過算法校驗每個安裝包的完整性。
  • yarn:官網

備注:以上 yarn 的優勢,目前最新的 npm 也都基本具備了。所以這些優勢如今并不明顯

全局安裝

npm i yarn -g

備注安裝 yarn 后,需要在系統全局配置環境變量

yarn 常用命令

yarn 命令功能描述對應 npm 命令
yarn init初始化包npm init
yarn -v查看版本號npm -v
yarn add 包名安裝某個包npm install 包名
yarn add 包名 -D安裝某個包(開發依賴)npm install 包名 -D
yarn global add 包名全局安裝一個包npm install 包名 -g
yarn global dir查看全局安裝位置npm root -g
yarn global list查看全局安裝列表npm list -g
yarn install安裝全部依賴npm install
yarn remove 包名刪除包npm remove 包名
yarn run 別名運行命令別名npm run 別名

pnpm 【推薦使用】

在這里插入圖片描述

pnpm(“performant npm”)是一個高效的包管理工具,與npm和yarn類似。它通過硬鏈接軟鏈接共享依賴庫,從而節省磁盤空間和加速安裝過程。并且很好的解決了幻影依賴的問題

pnpm:官網
點擊了解幻影依賴

全局安裝

npm install pnpm -g

在這里插入圖片描述


🚵?♂? 博主座右銘:向陽而生,我還在路上!
——————————————————————————————
🚴博主想說:將持續性為社區輸出自己的資源,同時也見證自己的進步!
——————————————————————————————
🤼?♂? 如果都看到這了,博主希望留下你的足跡!【📂收藏!👍點贊!??評論!】
——————————————————————————————

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10060.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10060.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10060.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我國吻合器市場規模不斷擴大 國產化率有所增長

我國吻合器市場規模不斷擴大 國產化率有所增長 吻合器是替代手工切除或縫合的一種醫療器械&#xff0c;其工作原理與訂書機十分相似&#xff0c;可利用鈦釘對組織進行離斷或吻合。經過多年發展&#xff0c;吻合器種類逐漸增多&#xff0c;根據手術方式不同&#xff0c;吻合器大…

【JavaEE 初階(三)】多線程代碼案例

?博主主頁: 33的博客? ??文章專欄分類:JavaEE?? &#x1f69a;我的代碼倉庫: 33的代碼倉庫&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;關注我帶你了解更多線程知識 目錄 1.前言2.單例模式2.1餓漢方式2.2餓漢方式 3.阻塞隊列3.1概念3.2實現 4.定時器4.1概念4.…

支付寶小程序如何去除頁面下拉回彈

描述&#xff1a;支付寶小程序頁面下拉時會產生回彈&#xff0c;如果頁面上有拖拽功能&#xff0c;會有影響 解決方法&#xff1a; 頁面xx.config.js中設置&#xff1a;allowsBounceVertical: “NO” 官方文檔&#xff1a;https://opensupport.alipay.com/support/FAQ/7110b5d…

WT32-ETH01作為TCP Client進行通訊

目錄 模塊簡介WT32-ETH01作為TCP Client設置電腦作為TCP Server設置連接并進行通訊總結 模塊簡介 WT32-ETH01網關主要功能特點: 采用雙核Xtensa⑧32-bit LX6 MCU.集成SPI flash 32Mbit\ SRAM 520KB 支持TCP Server. TCP Client, UDP Server. UDP Client工作模式 支持串口、wif…

鴻蒙OpenHarmony技術:【Docker編譯環境】

Docker環境介紹 OpenHarmony為開發者提供了兩種Docker環境&#xff0c;以幫助開發者快速完成復雜的開發環境準備工作。兩種Docker環境及適用場景如下&#xff1a; 獨立Docker環境&#xff1a;適用于直接基于Ubuntu、Windows操作系統平臺進行版本編譯的場景。基于HPM的Docker環…

其他編程語言中調用 Python 腳本,如何設置Python腳本的相對路徑

import os# 假設 script_directory 是你的腳本所在的目錄 script_directory os.path.dirname(os.path.abspath(__file__))# 使用 os.path.join 來構建相對路徑 relative_path_to_image os.path.join(script_directory, 合并/figure_pic2.png)# 現在你可以使用這個相對路徑來加…

uni-app+vue3 +uni.connectSocket 使用websocket

前言 最近在uni-appvue3websocket實現聊天功能&#xff0c;在使用websocket還是遇到很多問題 這次因為是app手機應用&#xff0c;就沒有使用websocket對象&#xff0c;使用的是uni-app的uni.connectSocket 為了方便測試這次用的是node.js一個簡單的dom&#xff0c;來聯調模擬…

Apache Flume Agent內部原理

Apache Flume Agent內部原理 Apache Flume 是一個可擴展的、分布式的日志收集、聚合和傳輸系統。在 Flume 中&#xff0c;Agent 是一個獨立的進程&#xff0c;負責接收、傳輸和處理數據。Agent 內部包含多個組件&#xff0c;每個組件都有不同的功能和責任。 1. Source&#xff…

5個 Elasticsearch 核心組件

Elasticsearch 是一個基于 Lucene 的搜索引擎&#xff0c;它提供了分布式、高可用、多租戶的能力。Elasticsearch 的核心組件包括節點&#xff08;Node&#xff09;、集群&#xff08;Cluster&#xff09;、索引&#xff08;Index&#xff09;、分片&#xff08;Shard&#xff…

三下鄉社會實踐投稿攻略在這里

在當今信息爆炸的時代&#xff0c;如何讓自己的聲音被更多人聽到&#xff0c;成為許多人和企業所關心的問題。其中&#xff0c;向各大媒體網站投稿&#xff0c;成為了一種常見的宣傳方式。但是&#xff0c;如何投稿各大媒體網站&#xff1f;新聞媒體發文策略又有哪些呢&#xf…

Flutter Clipboard實現復制功能

Flutter內置了Clipboard 功能,可以幫助我們完成復制粘貼的功能,比如我們想把“hello flutter”復制到粘貼板,代碼如下: TextButton(onPressed: () async {await Clipboard.setData(ClipboardData(text: hello flutter)

基于SpringBoot設計模式之開端

文章目錄 前言引言開始 前言 為了更好的在項目中&#xff0c;能更加優雅的使用設計模式&#xff0c;比較針對性的解決我們的問題。我將在這個專欄詳細的描述23種設計模式&#xff0c;為了與時俱進&#xff0c;我打算通過springboot的形式將23種設計模式全部擼完&#xff01; 引…

光耦推薦—高速風筒方案中用到哪些光耦型號

高速風筒是現代生活中常見的電器設備&#xff0c;廣泛應用于家庭、商業和工業領域&#xff1b;光耦是一種能夠將輸入信號轉換成輸出信號的元器件&#xff0c;其作用在于將電氣信號轉換成光信號&#xff0c;從而實現電路的隔離和保護&#xff1b;采用光耦可實現對風機轉速和溫度…

【管理咨詢寶藏99】離散制造智能工廠戰略規劃方案

本報告首發于公號“管理咨詢寶藏”&#xff0c;如需閱讀完整版報告內容&#xff0c;請查閱公號“管理咨詢寶藏”。 【管理咨詢寶藏99】離散制造智能工廠戰略規劃方案 【格式】PDF版本 【關鍵詞】智能制造、先進制造業轉型、數字化轉型 【核心觀點】 - 推進EHS、品質一致性、生…

【無標題】QCC 308x 518x 517x增加usb voice 32k采樣率

QCC 308x 518x 517x增加usb voice 32k采樣率 diff --git a/adk/src/domains/audio/kymera/kymera_usb_voice.c b/adk/src/domains/audio/kymera/kymera_usb_voice.c index 6dd82061..532c4ad8 100755 --- a/adk/src/domains/audio/kymera/kymera_usb_voice.c +++ b/adk/src/dom…

Failed to start tomcat.service: Unit is not loaded properly: Bad message 如何解決?

錯誤 “Failed to start tomcat.service: Unit is not loaded properly: Bad message” 通常意味著的 tomcat.service systemd 配置文件存在語法錯誤或配置不正確。為了解決這個問題&#xff0c;一步步檢查和修正這個服務文件。 1. 檢查 tomcat.service 文件 首先&#xff0c…

CSS文字描邊,文字間隔,div自定義形狀切割

clip-path: polygon( 0 0, 68% 0, 100% 32%, 100% 100%, 0 100% );//這里切割出來是少一角的正方形 letter-spacing: 1vw; //文字間隔 -webkit-text-stroke: 1px #fff; //文字描邊1px uniapp微信小程序頂部導航欄設置透明&#xff0c;下拉改變透明度 onP…

Docker部署RabbitMQ集群(單服務器多端口)

rabbitmq.conf在mq1、mq2、mq3下 ####文件內容 loopback_users.guest false listeners.tcp.default 5672 cluster_formation.peer_discovery_backend rabbit_peer_discovery_classic_config cluster_formation.classic_config.nodes.1 rabbitmq1 cluster_formation.classi…

SQL注入(sqli-labs第一關)

sqli-labs第一關 方法一&#xff1a;手工注入 來到第一關&#xff0c;圖上說我們需要一個數字的參數 于是我們先手工注入?id1 and 11 跟?id1 and 12發現頁面沒有報錯 每張截圖上面頁面中有select查詢語句&#xff0c;這是我在第一關的源碼中加上了echo "$sql ";…

SSM【Spring SpringMVC Mybatis】——Mybatis(二)

如果對一些基礎理論感興趣可以看這一期&#x1f447; SSM【Spring SpringMVC Mybatis】——Mybatis 目錄 1、Mybatis中參數傳遞問題 1.1 單個普通參數 1.2 多個普通參數 1.3 命名參數 1.4 POJO參數 1.5 Map參數 1.6 Collection|List|Array等參數 2、Mybatis參數傳遞【#與…