webpack的安裝及其后序部分

npm install原理

這個其實就是npm從registry下載項目到本地,沒有什么好說的

值得一提的是npm的緩存機制,如果多個項目都需要同一個版本的axios,每一次重新從registry中拉取的成本過大,所以會有緩存,如果緩存里有這個包那直接從緩存中直接拉取解壓了

怎么確定找到的就是自己需要的那個包呢?是有對應的標識符的,這個標識符就在package-lock.json里面

版本的具體也可以在package-lock.json中找(具體安裝的版本)

package-lock.json文件解析

name:項目的名稱?

version:項目的版本

lockfileVersion:lock文件的版本

requires:使用requires來跟蹤模塊的依賴關系

dependencies:項目的依賴

????????當前項目依賴axios,但是axios依賴follow-redireacts

? ? ? ? axios中的屬性:

? ? ? ? ? ? ? ? version表示實際安裝的axios版本

? ? ? ? ? ? ? ? resolved用來記錄下載的地址,registry倉庫中的位置

? ? ? ? ? ? ? ? requires/dependencies記錄當前模塊的依賴

? ? ? ? ? ? ? ? integrity用來從緩存中獲取索引,在通過索引去獲取壓縮包文件

npm install原理深入

從npm5開始,npm就支持緩存策略了(來自yarn的壓力),那么緩存有什么作用呢?

介素一副原理圖:

npm其他命令

介紹一下npm其他的幾個常用的命令

卸載某個依賴包:

npm uninstall package
npm uninstall package --save-dev
npm uninstall package -D

強制重新build:

npm rebuild

清除緩存:

npm cache clean

npm的命令很多捏:

https://docs.npmjs.com/cli-documentation/cli

可以查看文檔查命令

yarn工具

yarn工具和npm差不多,所做的事情也差不多

即生npm,何生yarn

yarn其實是為了彌補早期npm的一些缺陷(安裝依賴速度慢,版本依賴混亂)而出現的

從npm5版本開始,進行了很多的升級和改進,很多人依然喜歡用yarn

命令和使用都差不多

想要添加包的話是

yarn add

cnpm

每一種工具都有自己的適用場景

cnpm是中國適用

由于一些特殊原因,某些情況下沒辦法很好的從https://registry.npmjs.org下載下來一些需要的包

所以一些東西就會被存到鏡像服務器倉庫里

可以這樣查看npm的鏡像:

npm config get registry

也可以直接設置npm的鏡像:

npm config set registry https://registry.npm.taobao.org

但是有的人就不希望再將npm的鏡像修改了,一方面不希望隨意修改npm原本從官方下來包的渠道,另一方面如果鏡像掛了或者停止維護就又要改來改去了。。

這個時候就可以用cnpm并將它設置成淘寶的鏡像

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm config get registry #https://r.npm.taobao.org

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處:https://dhexx.cn/hk/5528848.html

如若內容造成侵權/違法違規/事實不符,請聯系我的編程經驗分享網進行投訴反饋,一經查實,立即刪除!


相關文章:

  • 內聯盒模型基本概念?——前端面試中的隱形考點剖析
  • 【大模型原理與技術-毛玉仁】第一章 語言模型基礎
  • VR 汽車:引領生產與設計的革命性飛躍?
  • Windwos上執行javadoc命令報錯java.lang.IllegalArgumentException
  • C 語言學習筆記(結構體2)
  • BugKu Web滲透之矛盾
  • day023-網絡基礎與OSI七層模型
  • JVM與JMM深度解析:從Java 8到Java 21的演進
  • linux安裝ffmpeg7.0.2全過程
  • ArcGIS Pro裁剪影像
  • GPIO驅動實例代碼
  • 三十一、面向對象底層邏輯-SpringMVC九大組件之RequestToViewNameTranslator接口設計哲學
  • ubuntu國內鏡像源手動配置
  • Kubernetes ConfigMap (明文)使用詳解
  • 使用Nginx + Keepalived配置實現Web站點高可用方案
  • 深蘭科技董事長陳海波率隊考察南京,加速AI大模型區域落地應用
  • MCP Server的五種主流架構:從原理到實踐的深度解析
  • 54、C# 委托 (Delegate)
  • 力扣——1.兩數之和
  • WPS自動換行
  • DeepSeek 賦能智能物流:解鎖倉儲機器人調度的無限可能
  • Vert.x學習筆記-什么是Context
  • 為 MCP Server 提供 Auth 認證,及 Django 實現示例
  • Linux中的進程控制(下)
  • # Python 語音助手本地的ollama實現
  • 【芯片設計- SoC 常用模塊 9.1 -- PLL 介紹】
  • Golang | gRPC索引服務
  • js中common.js和ECMAScript.js區別
  • King3399(ubuntu文件系統)iic(i2c)功能測試
  • 第五十七節:綜合項目實踐-智能監控系統原型
  • 隨機游動算法解決kSAT問題
  • 基于Doc2Vec的Markdown文檔分類實戰:從預處理到模型評估
  • qt之開發大恒usb3.0相機三
  • rsync使用守護進程啟動服務
  • DeepSeek實戰:打造智能數據分析與可視化系統
  • Linux操作系統 多進程多線程 信號量實現進程同步及共享內存
  • 類和對象(中1)
  • 深度學習入門:從零搭建你的第一個神經網絡
  • 【iOS】源碼閱讀(五)——類類的結構分析
  • Java數值字符串相加
  • c++第二章練習題
  • 【普及?】洛谷P1706 全排列問題
  • 基于GA遺傳優化的FIR濾波器幅頻相頻均衡補償算法matlab仿真
  • 醫院閉環系統業務介紹
  • 前端面經 React常見的生命周期
  • 接地氣的方式認識JVM(一)
  • Python訓練打卡Day36
  • JS逆向 QQ音樂sign簽名|webpack實戰 (上)
  • Prometheus學習之pushgateway和altermanager組件
  • LVS-DR 負載均衡群集