Linux中國

如何使用 npm 管理 NodeJS 包

前一段時間,我們發布了一個使用 pip 管理 Python 包的指南。今天,我們將討論如何使用 npm 管理 NodeJS 包。npm 是最大的軟體註冊中心,包含 600,000 多個包。每天,世界各地的開發人員通過 npm 共享和下載軟體包。在本指南中,我將解釋使用 npm 基礎知識,例如安裝包(本地和全局)、安裝特定版本的包、更新、刪除和管理 NodeJS 包等等。

安裝 npm

用於 npm 是用 NodeJS 編寫的,我們需要安裝 NodeJS 才能使用 npm。要在不同的 Linux 發行版上安裝 NodeJS,請參考下面的鏈接。

檢查 node 安裝的位置:

$ which node
/home/sk/.nvm/versions/node/v9.4.0/bin/node

檢查它的版本:

$ node -v
v9.4.0

進入 Node 互動式解釋器:

$ node
> .help
.break Sometimes you get stuck, this gets you out
.clear Alias for .break
.editor Enter editor mode
.exit Exit the repl
.help Print this help message
.load Load JS from a file into the REPL session
.save Save all evaluated commands in this REPL session to a file
> .exit

檢查 npm 安裝的位置:

$ which npm
/home/sk/.nvm/versions/node/v9.4.0/bin/npm

還有版本:

$ npm -v
5.6.0

棒極了!Node 和 npm 已安裝好!正如你可能已經注意到,我已經在我的 $HOME 目錄中安裝了 NodeJS 和 NPM,這樣是為了避免在全局模塊時出現許可權問題。這是 NodeJS 團隊推薦的方法。

那麼,讓我們繼續看看如何使用 npm 管理 NodeJS 模塊(或包)。

安裝 NodeJS 模塊

NodeJS 模塊可以安裝在本地或全局(系統範圍)。現在我將演示如何在本地安裝包(LCTT 譯註:即將包安裝到一個 NodeJS 項目當中,所以下面會先創建一個空項目做演示)。

在本地安裝包

為了在本地管理包,我們通常使用 package.json 文件來管理。

首先,讓我們創建我們的項目目錄。

$ mkdir demo
$ cd demo

在項目目錄中創建一個 package.json 文件。為此,運行:

$ npm init

輸入你的包的詳細信息,例如名稱、版本、作者、GitHub 頁面等等,或者按下回車鍵接受默認值並鍵入 yes 確認。

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (demo)
version: (1.0.0)
description: demo nodejs app
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /home/sk/demo/package.json:

{
 "name": "demo",
 "version": "1.0.0",
 "description": "demo nodejs app",
 "main": "index.js",
 "scripts": {
 "test": "echo "Error: no test specified" && exit 1"
 },
 "author": "",
 "license": "ISC"
}

Is this ok? (yes) yes

上面的命令初始化你的項目並創建了 package.json 文件。

你也可以使用命令以非互動式方式執行此操作:

npm init --y

現在讓我們安裝名為 commander 的包。

$ npm install commander

示例輸出:

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN demo@1.0.0 No repository field.

+ commander@2.13.0
added 1 package in 2.519s

這將在項目的根目錄中創建一個名為 node_modules 的目錄(如果它不存在的話),並在其中下載包。

讓我們檢查 pachage.json 文件。

$ cat package.json 
{
 "name": "demo",
 "version": "1.0.0",
 "description": "demo nodejs app",
 "main": "index.js",
 "scripts": {
 "test": "echo "Error: no test specified" && exit 1"
 },
 "author": "",
 "license": "ISC",
 "dependencies": {
 "commander": "^2.13.0"
 }
}

你會看到添加了依賴文件,版本號前面的插入符號 ( ^ ) 表示在安裝時,npm 將取出它可以找到的最高版本的包。

$ ls node_modules/
commander

package.json 文件的優點是,如果你的項目目錄中有 package.json 文件,只需鍵入 npm install,那麼 npm 將查看文件中列出的依賴關係並下載它們。你甚至可以與其他開發人員共享它或將其推送到你的 GitHub 倉庫。因此,當他們鍵入 npm install 時,他們將獲得你擁有的所有相同的包。

你也可能會注意到另一個名為 package-lock.json 的文件,該文件確保在項目安裝的所有系統上都保持相同的依賴關係。

要在你的程序中使用已安裝的包,使用實際代碼在項目目錄中創建一個 index.js(或者其他任何名稱)文件,然後使用以下命令運行它:

$ node index.js

在全局安裝包

如果你想使用一個包作為命令行工具,那麼最好在全局安裝它。這樣,無論你的當前目錄是哪個目錄,它都能正常工作。

$ npm install async -g
+ async@2.6.0
added 2 packages in 4.695s

或者

$ npm install async --global

要安裝特定版本的包,我們可以:

$ npm install async@2.6.0 --global

更新 NodeJS 模塊

要更新本地包,轉到 package.json 所在的項目目錄並運行:

$ npm update

然後,運行以下命令確保所有包都更新了。

$ npm outdated

如果沒有需要更新的,那麼它返回空。

要找出哪一個全局包需要更新,運行:

$ npm outdated -g --depth=0

如果沒有輸出,意味著所有包都已更新。

更新單個全局包,運行:

$ npm update -g <package-name>

更新所有的全局包,運行:

$ npm update -g

列出 NodeJS 模塊

列出本地包,轉到項目目錄並運行:

$ npm list
demo@1.0.0 /home/sk/demo
└── commander@2.13.0

如你所見,我在本地安裝了 commander 這個包。

要列出全局包,從任何位置都可以運行以下命令:

$ npm list -g

示例輸出:

/home/sk/.nvm/versions/node/v9.4.0/lib
├─┬ async@2.6.0
│ └── lodash@4.17.4
└─┬ npm@5.6.0
 ├── abbrev@1.1.1
 ├── ansi-regex@3.0.0
 ├── ansicolors@0.3.2
 ├── ansistyles@0.1.3
 ├── aproba@1.2.0
 ├── archy@1.0.0
[...]

該命令將列出所有模塊及其依賴關係。

要僅僅列出頂級模塊,使用 -depth=0 選項:

$ npm list -g --depth=0
/home/sk/.nvm/versions/node/v9.4.0/lib
├── async@2.6.0
└── npm@5.6.0

尋找 NodeJS 模塊

要搜索一個模塊,使用 npm search 命令:

npm search <search-string>

例如:

$ npm search request

該命令將顯示包含搜索字元串 request 的所有模塊。

移除 NodeJS 模塊

要刪除本地包,轉到項目目錄並運行以下命令,這會從 node_modules 目錄中刪除包:

$ npm uninstall <package-name>

要從 package.json 文件中的依賴關係中刪除它,使用如下所示的 save 選項:

$ npm uninstall --save <package-name>

要刪除已安裝的全局包,運行:

$ npm uninstall -g <package>

清除 npm 緩存

默認情況下,npm 在安裝包時,會將其副本保存在 $HOME 目錄中名為 .npm 的緩存文件夾中。所以,你可以在下次安裝時不必再次下載。

查看緩存模塊:

$ ls ~/.npm

隨著時間的推移,緩存文件夾會充斥著大量舊的包。所以不時清理緩存會好一些。

從 npm@5 開始,npm 緩存可以從 corruption 問題中自行修復,並且保證從緩存中提取的數據有效。如果你想確保一切都一致,運行:

$ npm cache verify

清除整個緩存,運行:

$ npm cache clean --force

查看 npm 配置

要查看 npm 配置,鍵入:

$ npm config list

或者:

$ npm config ls

示例輸出:

; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v9.4.0 linux x64"

; node bin location = /home/sk/.nvm/versions/node/v9.4.0/bin/node
; cwd = /home/sk
; HOME = /home/sk
; "npm config ls -l" to show all defaults.

要顯示當前的全局位置:

$ npm config get prefix
/home/sk/.nvm/versions/node/v9.4.0

好吧,這就是全部了。我們剛才介紹的只是基礎知識,npm 是一個廣泛話題。有關更多詳細信息,參閱 NPM Getting Started 指南。

希望這對你有幫助。更多好東西即將來臨,敬請關注!

乾杯!

via: https://www.ostechnix.com/manage-nodejs-packages-using-npm/

作者:SK 譯者:MjSeven 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...