都2022 年了,你總不能還只會 npm i 吧?

?鏈接每一位開發(fā)者,讓編程更有趣兒!關(guān)注
都2022 年了,你總不能還只會 npm i 吧?大家好!我是法醫(yī),一只治療系前端碼猿??,與代碼對話,傾聽它們心底的呼聲,期待著大家的點贊??與關(guān)注?,當(dāng)然也歡迎加入前端獵手技術(shù)交流群??,文末掃碼我拉你進群,一起交流技術(shù)以及代碼之外的一切???♀?
在鍵帽與字符上橫跳,于代碼和程序中穿梭。一起面向快樂編程!
馬上金三銀四啦 ~ 這次給大家?guī)硪黄?npm 命令相關(guān)的文章。目的在于查缺補漏,提升效率。
npm 作為 node 包管理器,內(nèi)置了非常多的命令供我們?nèi)粘i_發(fā)使用,記住以下列出的命令將會給日常開發(fā)帶來非常大的便利性。
好了,話不多說,看代碼 ??
給喜歡的包加星(類似 github 的 star)
其實我把加星就當(dāng)作是收藏的操作,其實在 npm 中它就是收藏的作用,因為在官網(wǎng)中,我們并不能像 github 一樣清楚的看到這個倉庫有多少顆 star。
npm?star?[package-name]
取消收藏
npm?unstar?[package-name]
查看收藏列表
npm?stars

這些操作都會報錯在你的賬號下,所以很方便。不用擔(dān)心本機操作后其他地方看不到。你只需要有一個 npm 賬戶就可以了,還沒有的話,可以看本文第二節(jié) ?? ,注冊一個并登錄吧。
登錄 npm
首先你要有一個 npm 的賬號,沒有的在??npm 官網(wǎng)[1]注冊一個就行了。
注意:在官網(wǎng)注冊的賬號,登陸時使用淘寶源會報錯,要改回默認源
推薦使用 nrm 或者 yrm 來快速切換鏡像源,個人推薦使用 yrm,為什么呢?看下圖
nrmyrm 會同時將你的 npm 和 yarn 一起切換,并且 ls 后會有*號標(biāo)注當(dāng)前正在使用的源,記得 nrm 以前也有的,現(xiàn)在不知道怎么了...
yrm當(dāng)然你可以手動 npm 切換為默認源
npm?config?set?registry?https://registry.npmjs.org
然后執(zhí)行命令npm login,依次填寫用戶名、密碼、郵箱即可。如果你在 npmjs 站點還設(shè)置了其他保護,就還需要輸入一些驗證碼之類的等等...

npm?adduser
#?or
npm?login
#?login是adduser的一個別名

你可以通過以下命令查看當(dāng)前 npm 的登陸人
npm?whoami
查看某個包的文檔
每次我們想在瀏覽器中打開某個包的文檔,總習(xí)慣去搜索引擎搜索,其實一行命令就能解決的事情,不要再去百度搜索啦~
#?此命令會嘗試猜測包文檔 URL 的可能位置,一般沒有自定義的話,就會打開包的github地址。
npm?docs?[package-name]
#?or
npm?home?[package-name]

嘗試以下命令,可以快速打開 lodash 的官方文檔 ??
npm?docs?lodash
#?or
npm?home?lodash
npm docs或者npm home命令在不接參數(shù)時,會在當(dāng)前項目中,通過?package.json?文件中的homepage配置,來打開對應(yīng)的地址。

如上圖所示,其原理就是:當(dāng)你要查看的項目中的?package.json?文件中,設(shè)置了homepage屬性,通過npm docs/home就能打開對應(yīng)的主頁,沒有設(shè)置homepage屬性時,npm 會繼續(xù)尋找其中的repository屬性,這時候打開的就是項目在 github 中的托管地址 url 拼接“#readme” (例如:https://github.com/用戶名/倉庫名#readme),如果你repository屬性也沒設(shè)置,那么就會打開 npm 官網(wǎng)中包的所在地址,(例如:https://www.npmjs.com/package/npm-limit)
當(dāng)然,你也可以在npm docs/home后不接參數(shù),這樣就會直接打開當(dāng)前項目的主頁。
查看某個包的代碼倉庫
想看某個包的源碼?還要跑到 github 去搜索?nonono,也是一行代碼。
#?此命令嘗試猜測包的存儲庫?URL?的可能位置
npm?repo?[package-name]
?? 它是根據(jù)項目中的?package.json?文件中,設(shè)置的repository屬性,來打開對應(yīng)的 url。
快速給一個包提 issues
npm?bugs?[package-name]
?? 它是根據(jù)項目中的?package.json?文件中,設(shè)置的bugs屬性,來打開對應(yīng)的 url。

查看某個包的詳細信息
這個命令有什么用呢?可以很方便的看到指定包的詳細信息,比如我們想找到包的作者以及 ta 的聯(lián)系方式(交流學(xué)習(xí))。
npm?v?[package-name]
#?or
npm?view?[package-name]
npm?info?[package-name]
npm?show?[package-name]

查看某個包的所有歷史版本
npm?v?[package-name]?versions

本地開發(fā)的 npm 包如何調(diào)試
我們可以像往常一樣將本地開發(fā)的 npm 包安裝到全局或指定目錄。
npm?install?.?-g
#?在某個項目中安裝本地包
npm?install?../Path/xxPackageName
也可以做一個軟鏈指向當(dāng)前需要調(diào)試的項目(全局)
npm?link
將調(diào)試包鏈接到當(dāng)前項目中(先做一個軟鏈指向當(dāng)前需要調(diào)試的項目)
#?先在本地開發(fā)的?npm?包中執(zhí)行??
npm?link
#?然后切換到你要安裝本地調(diào)試包的項目中,執(zhí)行??,即可將本地包安裝到項目依賴中
npm?link?<package-name>
#?項目中取消安裝本地的調(diào)試包??
npm?unlink?<package-name>
npm 發(fā)布包
首先,你得在本地登錄(不會的看文章最開頭的登錄方法 ??)
登錄完成后,發(fā)布自己開發(fā)的工具包,只需簡單的三步!
注意:使用淘寶源會報錯,要改回默認源
記得每次發(fā)布前,修改下版本號!
npm?version?[版本號]
然后當(dāng)前目錄執(zhí)行npm publish就好了
npm?publish
棄用包的相關(guān)操作
注意:強烈建議棄用包或包版本而不是取消發(fā)布它們,因為取消發(fā)布會從注冊表中完全刪除一個包,這意味著任何依賴它的人都將無法再使用它,而不會發(fā)出警告。
棄用整個包
npm?deprecate?package-name?"棄用信息"
棄用包的單個版本
npm?deprecate?package-name@version?"棄用信息"
取消棄用操作
#?將棄用消息改為空字符串即可
npm?deprecate?package-name?""
取消發(fā)布(危險操作)*
取消發(fā)布整個包
npm?unpublish?[package-name]?-f
取消發(fā)布包的指定版本
npm?unpublish?[package-name]@<version>
取消發(fā)布包后,以相同名稱重新發(fā)布將被阻止 24 小時。如果您錯誤地取消發(fā)布了一個包,我們建議您以不同的名稱再次發(fā)布,或者對于未發(fā)布的版本,增加版本號并再次發(fā)布。
一些好用的其他操作
包的重命名
#?(重命名包的唯一方法是以新名稱重新發(fā)布它)
查看當(dāng)前項目中有哪些包過時了
npm?outdated
查看本地全局環(huán)境的包有哪些過時了
npm?outdated?-g?--depth=0

列出 node_modules 中的所有包
ls?node_modules
#?or
dir?node_modules
審計項目中所有包的安全漏洞
npm?audit
#?這個命令依賴?package-lock.json?文件,所以如果你用的是yarn需要使用下面的命令
yarn?audit
執(zhí)行后會列出有問題的包

| hahh | hah |
|---|---|
| Critical | 需要立即解決的! |
| High | 需要盡快解決! |
| Moderate | 在時間允許的情況下解決 |
| Low | 隨便你,不慌不燥不急不忙 |
報告中會給出它問題的嚴重性,你就可以根據(jù)具體情況來進行版本更新或是調(diào)整。
npm?token?list

檢測一下當(dāng)前鏡像源的延遲
npm?ping

檢測當(dāng)前 node 和 npm 存在的問題 ??
npm?doctor

參考資料
[1]??npm 官網(wǎng):?https://www.npmjs.com/signup
很感謝小伙伴看到最后??,如果您覺得這篇文章有幫助到您的的話不妨關(guān)注?+點贊??+收藏??+評論??,您的支持就是我更新的最大動力。
歡迎加入前端獵手技術(shù)交流群??,文末掃碼加我微信,我拉你進群,一起交流技術(shù)以及代碼之外的一切???♀?
