大家好,我是若川。我持續組織了近一年的源碼共讀活動,感興趣的可以?點此掃碼加我微信?ruochuan12?參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》?包含20余篇源碼文章。歷史面試系列。另外:目前建有江西|湖南|湖北
籍前端群,可加我微信進群。
都2022 年了,你總不能還只會 npm i 吧?
在鍵帽與字符上橫跳,于代碼和程序中穿梭。一起面向快樂編程!
這次給大家帶來一篇 npm 命令相關的文章。目的在于查缺補漏,提升效率。
npm 作為 node 包管理器,內置了非常多的命令供我們日常開發使用,記住以下列出的命令將會給日常開發帶來非常大的便利性。
好了,話不多說,看代碼 👇
給喜歡的包加星(類似 github 的 star)
其實我把加星就當作是收藏的操作,其實在 npm 中它就是收藏的作用,因為在官網中,我們并不能像 github 一樣清楚的看到這個倉庫有多少顆 star。
npm?star?[package-name]
取消收藏
npm?unstar?[package-name]
查看收藏列表
npm?stars

這些操作都會報錯在你的賬號下,所以很方便。不用擔心本機操作后其他地方看不到。你只需要有一個 npm 賬戶就可以了,還沒有的話,可以看本文第二節 👇 ,注冊一個并登錄吧。
登錄 npm
首先你要有一個 npm 的賬號,沒有的在👉npm 官網[1]注冊一個就行了。
注意:在官網注冊的賬號,登陸時使用淘寶源會報錯,要改回默認源
推薦使用 nrm 或者 yrm 來快速切換鏡像源,個人推薦使用 yrm,為什么呢?看下圖

yrm 會同時將你的 npm 和 yarn 一起切換,并且 ls 后會有*號標注當前正在使用的源,記得 nrm 以前也有的,現在不知道怎么了...

當然你可以手動 npm 切換為默認源
npm?config?set?registry?https://registry.npmjs.org
然后執行命令npm login
,依次填寫用戶名、密碼、郵箱即可。如果你在 npmjs 站點還設置了其他保護,就還需要輸入一些驗證碼之類的等等...

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

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

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

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

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

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

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

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

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

檢測一下當前鏡像源的延遲
npm?ping

檢測當前 node 和 npm 存在的問題 👇
npm?doctor

參考資料
[1]
👉npm 官網: https://www.npmjs.com/signup
·················?若川簡介?·················
你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列》20余篇,在知乎、掘金收獲超百萬閱讀。
從2014年起,每年都會寫一篇年度總結,已經堅持寫了8年,點擊查看年度總結。
同時,最近組織了源碼共讀活動,幫助4000+前端人學會看源碼。公眾號愿景:幫助5年內前端人走向前列。
掃碼加我微信 lxchuan12、拉你進源碼共讀群
今日話題
目前建有江西|湖南|湖北?籍 前端群,想進群的可以加我微信 lxchuan12?進群。分享、收藏、點贊、在看我的文章就是對我最大的支持~