npm 命令使用文檔

目錄

  1. 簡介
  2. 安裝與配置
  3. 基礎命令
  4. 依賴管理
  5. 版本控制
  6. 腳本管理
  7. 包發布
  8. 高級命令
  9. 配置管理
  10. 最佳實踐
  11. 常見問題

1. 簡介

npm (Node Package Manager) 是 Node.js 的官方包管理工具,提供:

  • 130萬+ 開源包的注冊表訪問
  • 依賴解析與版本管理
  • 項目腳本自動化
  • 私有包管理能力
  • 完整的包生命周期管理

2. 安裝與配置

2.1 安裝Node.js

# 通過官方安裝包
https://nodejs.org# 驗證安裝
node -v
npm -v

2.2 配置初始化

npm init            # 交互式創建package.json
npm init -y         # 快速生成默認配置

2.3 鏡像源配置

npm config set registry https://registry.npmmirror.com  # 阿里云鏡像
npm config get registry            # 查看當前源
npm config delete registry         # 恢復默認源

3. 基礎命令

3.1 包安裝

npm install                         # 安裝所有依賴
npm install lodash                  # 安裝生產依賴
npm install eslint -D               # 安裝開發依賴
npm install react@18.2.0            # 安裝指定版本
npm install ../my-package           # 安裝本地包

3.2 包管理

npm uninstall axios                 # 卸載包
npm update                          # 更新所有依賴
npm outdated                        # 檢查過時依賴
npm ls                              # 查看依賴樹
npm cache clean --force             # 清理緩存

4. 依賴管理

4.1 依賴類型

{"dependencies": {         // 生產環境依賴"lodash": "^4.17.21"},"devDependencies": {      // 開發環境依賴"webpack": "^5.75.0"},"peerDependencies": {     // 宿主環境依賴"react": ">=16.8.0"},"optionalDependencies": { // 可選依賴"fsevents": "^2.3.2"}
}

4.2 全局安裝

npm install -g typescript       # 全局安裝
npm list -g --depth=0           # 查看全局安裝包

5. 版本控制

5.1 語義化版本 (SemVer)

^1.2.3  # 兼容次要版本和補丁 (1.x.x)
~1.2.3  # 僅兼容補丁版本 (1.2.x)
1.2.x   # 指定次要版本
*       # 最新版本

5.2 版本鎖定

npm shrinkwrap          # 生成npm-shrinkwrap.json
npm ci                  # 嚴格按lockfile安裝

6. 腳本管理

6.1 基礎腳本

{"scripts": {"start": "node index.js","test": "jest","build": "webpack --mode production","prepublish": "npm run build"}
}

6.2 高級用法

npm run test -- --coverage      # 傳遞參數
npm run lint & npm run build    # 并行執行
npm run prestart                # 生命周期鉤子

7. 包發布

7.1 發布流程

npm login                       # 登錄賬號
npm publish                     # 發布公開包
npm publish --access public     # 明確發布公開包
npm version patch               # 版本號升級
npm deprecate <pkg>@<version> "message"  # 標記棄用

7.2 私有包

npm init --scope=yourorg        # 創建組織包
npm publish --access restricted # 發布私有包

8. 高級命令

8.1 審計與安全

npm audit                       # 安全審計
npm audit fix                   # 自動修復漏洞
npm fund                        # 查看依賴資金信息

8.2 調試工具

npm view react                  # 查看包信息
npm docs lodash                 # 打開文檔網站
npm repo webpack                # 打開源碼倉庫
npm explore react -- npm ls     # 進入包目錄

9. 配置管理

9.1 配置文件

.npmrc 優先級:
項目級 > 用戶級 > 全局 > npm內置

9.2 常用配置項

npm config set save-exact true      # 精確版本
npm config set script-shell bash    # 指定腳本shell
npm config set engine-strict true   # 嚴格引擎檢查

10. 最佳實踐

  1. 使用 npm ci 代替 npm install 在CI環境
  2. 定期執行 npm outdatednpm update
  3. 提交 package-lock.json 到版本控制
  4. 使用 npm audit 進行安全審計
  5. 為CLI工具添加 bin 字段
  6. 使用 .npmignore 控制發布內容
  7. 合理使用 peerDependencies 避免重復依賴
  8. 對私有包使用作用域 (@org/package)

11. 常見問題

Q1: 安裝權限錯誤

# 解決方案:
sudo chown -R $(whoami) ~/.npm
# 或使用Node版本管理工具(nvm)

Q2: 依賴沖突解決

npm ls <package-name>        # 查看依賴路徑
npm dedupe                   # 嘗試優化依賴樹

Q3: 加速安裝

npm install --prefer-offline # 優先使用緩存
npm config set prefer-offline true  # 永久設置

轉載吱一聲~

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

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

相關文章

【Linux篇】進程控制

&#x1f4cc; 個人主頁&#xff1a; 孫同學_ &#x1f527; 文章專欄&#xff1a;Liunx &#x1f4a1; 關注我&#xff0c;分享經驗&#xff0c;助你少走彎路&#xff01; 1. 進程創建 1.1 fork函數 在linux中fork函數是非常重要的函數&#xff0c;它從已存在進程中創建一個…

HyperAD:學習弱監督音視頻暴力檢測在雙曲空間中的方法

文章目錄 速覽摘要1. 引言2. 相關工作弱監督暴力檢測雙曲空間中的神經網絡 3. 預備知識雙曲幾何切空間&#xff08;Tangent Space&#xff09;指數映射與對數映射&#xff08;Exponential and Logarithmic Maps&#xff09;3.1 雙曲圖卷積網絡&#xff08;Hyperbolic Graph Con…

動態規劃(6.不同路徑II)

題目鏈接&#xff1a;63. 不同路徑 II - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 本題為不同路徑的變型&#xff0c;只不過有些地方有「障礙物」&#xff0c;只要在「狀態轉移」上稍加修改就可解決。 狀態表示&#xff1a; 對于這種Γ路徑類」的問題&#xf…

深度洞察:DeepSeek 驅動金融行業智能化轉型變革

該文章為軟件測評&#xff0c;不是廣告&#xff01;&#xff01;&#xff01;&#xff01; 目錄 一.金融行業的智能化轉型浪潮? 二.DeepSeek的核心技術剖析 1.DeepSeek 模型的金融智慧? 2.實時聯網搜索&#xff1a;把握金融市場脈搏? 3.RAG 能力&#xff1a;鑄就精準金…

藍橋杯備考----》暴力枚舉---金盞花

這道題&#xff0c;一共12位&#xff0c;給了后六位&#xff0c;我們只要枚舉前六位就行了&#xff0c;當然如果是10的12次方的話&#xff0c;必須要開long long才可以存下&#xff0c;這點我們不要忘了 然后題目中又告訴了沒有前導0&#xff0c;我們可以從100000開始枚舉&…

RAG各類方法python源碼解讀與實踐:利用Jupyter對RAG技術綜合評測【3萬字長文】

檢索增強生成&#xff08;RAG &#xff09;是一種結合信息檢索與生成模型的混合方法。它通過引入外部知識來提升語言模型的性能&#xff0c;從而提高回答的準確性和事實正確性。為了簡單易學&#xff0c;不使用LangChain框架或FAISS向量數據庫&#xff0c;而是利用Jupyter Note…

Python列表2

print("—————————— 列表的相關操作 ————————————")lst.append(x)在列表lst最后增加一個元素 lst.insert(index,x)在列表中第index位置增加一個元素 lst.clear()清除列表lst中所有元素 lst.pop(index)將列表lst中第index位置的元素取出&#xf…

華為OD機試-IPv4地址轉換成整數(Java 2024 B卷 100分)

題目描述 存在一種虛擬 IPv4 地址 Q,由 4 小節組成,每節的范圍為 0~255,以 # 號間隔。虛擬 IPv4 地址可以轉換為一個 32 位的整數。例如: 128#0#255#255 轉換為 32 位整數的結果為 2147549183(0x8000FFFF)1#0#0#0 轉換為 32 位整數的結果為 16777216(0x01000000)現以字…

C語言復習筆記--數組

今天繼續來淺淺推進一下C語言的復習,這次是數組的復習,話不多說,正文開始. 數組的概念 數組是?組相同類型元素的集合,一種自定義類型.數組中元素個數不能為0.數組分為?維數組和多維數組&#xff0c;多維數組?般?較多?的是?維數組. 下面從一維數組說起. 一維數組的創建和…

Canal 解析與 Spring Boot 整合實戰

一、Canal 簡介 1.1 Canal 是什么&#xff1f; Canal 是阿里巴巴開源的一款基于 MySQL 數據庫增量日志解析&#xff08;Binlog&#xff09;中間件&#xff0c;它模擬 MySQL 的從機&#xff08;Slave&#xff09;行為&#xff0c;監聽 MySQL 主機的二進制日志&#xff08;Binl…

《論語別裁》第01章 學而(31) 詩的人生

不過這句話研究起來有一個問題&#xff0c;是詩的問題。我們知道中國文化&#xff0c;在文學的境界上&#xff0c;有一個演變發展的程序&#xff0c;大體的情形&#xff0c;是所謂漢文、唐詩、宋詞、元曲、明小說&#xff0c;到了清朝&#xff0c;我認為是對聯&#xff0c;尤其…

筆記本運行邊緣計算

筆記本電腦可以用來運行PCDN&#xff08;Peer-to-Peer Content Delivery Network&#xff09;服務。實際上&#xff0c;如果你有閑置的筆記本電腦&#xff0c;并且它具備一定的硬件條件和網絡環境&#xff0c;那么它可以成為一個不錯的PCDN節點。 運行PCDN的基本要求 硬件需求…

暗光增強技術研究進展與產品落地綜合分析(2023-2025)

一、引言 暗光增強技術作為計算機視覺與移動影像領域的核心研究方向之一,近年來在算法創新、硬件適配及產品落地方面取得了顯著進展。本文從技術研究與產業應用兩個維度,系統梳理近三年(2023-2025)該領域的關鍵突破,并對比分析主流手機廠商的影像技術優劣勢。 二、暗光增…

多維array和多維視圖std::mdspan

多維數組 這個特性用于訪問多維數組&#xff0c;之前C operator[] 只支持訪問單個下標&#xff0c;無法訪問多維數組。 因此要訪問多維數組&#xff0c;以前的方式是&#xff1a; 重載operator()&#xff0c;于是能夠以m(1, 2) 來訪問第1 行第2 個元素。但這種方式容易和函數…

Python標準庫之os模塊常用方法

一、os模塊簡介 os模塊是Python標準庫中與操作系統交互的一個重要模塊。它提供了非常豐富的方法來處理文件、目錄以及與操作系統相關的操作&#xff0c;讓我們可以編寫跨平臺的代碼&#xff0c;無論是在Windows、Linux還是macOS系統上都能運行。 二、文件和目錄操作 獲取當前…

利用AI讓數據可視化

1. 從問卷星上下載一份答題結果。 序號用戶ID提交答卷時間所用時間來源來源詳情來自IP總分1、《中華人民共和國電子商務法》正式實施的時間是&#xff08;&#xff09;。2、&#xff08;&#xff09;可以判斷企業在行業中所處的地位。3、&#xff08;&#xff09;是指店鋪內有…

K8S學習之基礎三十五:k8s之Prometheus部署模式

Prometheus 有多種部署模式&#xff0c;適用于不同的場景和需求。以下是幾種常見的部署模式&#xff1a; 1. 單節點部署 這是最簡單的部署模式&#xff0c;適用于小型環境或測試環境。 特點&#xff1a; 單個 Prometheus 實例負責所有的數據采集、存儲和查詢。配置簡單&…

【第14節】windows sdk編程:進程與線程介紹

目錄 一、進程與線程概述 1.1 進程查看 1.2 何為進程 1.3 進程的創建 1.4 進程創建實例 1.5 線程查看 1.6 何為線程 1.7 線程的創建 1.8 線程函數 1.9 線程實例 二、內核對象 2.1 何為內核對象 2.2 內核對象的公共特點 2.3 內核對象句柄 2.4 內核對象的跨進程訪…

Python簡單爬蟲實踐案例

學習目標 能夠知道Web開發流程 能夠掌握FastAPI實現訪問多個指定網頁 知道通過requests模塊爬取圖片 知道通過requests模塊爬取GDP數據 能夠用pyecharts實現餅圖 能夠知道logging日志的使用 一、基于FastAPI之Web站點開發 1、基于FastAPI搭建Web服務器 # 導入FastAPI模…

uniapp工程中解析markdown文件

在uniapp中如何導入markdown文件&#xff0c;同時在頁面中解析成html&#xff0c;請參考以下配置&#xff1a; 1. 安裝以下3個依賴包 npm install marked highlight.js vite-plugin-markdown 2. 創建vite.config.js配置文件 // vite.config.js import { defineConfig } fro…