作者 | Sk
譯者 | MjSeven ? ? ? ? 共計翻譯:35 篇 貢獻時間:96 天
前一段時間,我們釋出了一個使用 pip 管理 Python 包[1]的指南。今天,我們將討論如何使用 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
` 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[3] 的包。
$ 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[1] 指南。
希望這對你有幫助。更多好東西即將來臨,敬請關註!
乾杯!
via: https://www.ostechnix.com/manage-nodejs-packages-using-npm/
作者:SK[5] 譯者:MjSeven 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出