[初級前端工程師]應(yīng)該掌握的npm與node

語義化版本號

版本格式:主版本號.次版本號.修訂號,版本號遞增規(guī)則如下:

主版本號:當你做了不兼容的 API 修改,
次版本號:當你做了向下兼容的功能性新增,
修訂號:當你做了向下兼容的問題修正。
先行版本號及版本編譯元數(shù)據(jù)可以加到“主版本號.次版本號.修訂號”的后面,作為延伸。

語義化版本范圍

安裝策略和范圍簡寫,如*,~^是由semver實現(xiàn)和包管理器引入的;

* 最簡單的語義化范圍

它接受任何可用的版本,默認為“最新”。 應(yīng)該避免使用“*”,因為它會愉快地安裝主版本的軟件包,這當中含有跨主版本的重大變化
major-version or major-version.minor-version

省略次版本/補丁版本

version 2 包含了所有低于version3的次版本和補丁版本,version2.4包含所有低于version2.5的補丁版本,也可以用 x在次版本和補丁版本中更加明確的表示:
For example: 2.x.x or 2.4.*

- ,<,<=,>> =顯式指定范圍。 例如:

1.2.3 - 2.3.4”與> = 1.2.3 <= 2.3.4相同,它指定范圍可以包括所有版本,包括1.2.3一直到,包括2.3.4`

> = 1.2.0 <1.3.0類似于1.2.x(由于預(yù)發(fā)布和元數(shù)據(jù)標簽超出了本文的范圍,因此不完全相同)

<1.0.0僅接受0.x.x范圍內(nèi)的版本。

npm緩存管理

當npm安裝一個軟件包時,它會保留一個副本,因此下次要安裝該軟件包時,它不需要訪問網(wǎng)絡(luò)。 副本緩存在主路徑的.npm目錄中。

$ ls ~/.npm

隨著時間的推移,這個目錄會變得雜亂無章,因此偶爾清理它會很有用

$ npm cache clean --force

如果系統(tǒng)上有多個要清理的節(jié)點項目,也可以從工作空間中清除所有node_module文件夾。

find . -name "node_modules" -type d -exec rm -rf '{}' +

menter's question

1.為什么要使用包管理,它解決了什么問題?
一個網(wǎng)站里通常有幾十甚至上百個 package,分散在各處,但是如果重復(fù)造一些輪子,不如上傳到一個公共平臺,讓更多的人一起使用、參與這個特定功能的模塊。目前成熟的包管理就是npm
網(wǎng)站代碼依賴多,使用工具進行集中化管理,省去了download依賴的麻煩;
npm的作用就是讓我們下載和發(fā)布一些輪子更加方便;
2.它是如何解決這些問題的?
將公共的js庫傳到統(tǒng)一的服務(wù)器上,存放共享代碼,根據(jù)package.json中依賴包的名字,使用npm install 命令下載到本地
3.npm有哪些弊端
NPM本身存在一致性、安全性以及性能方面的弊端;
一致性:同一個項目,由于版本號是寬松的,download后的node_modules 中的版本可能不同;
安全性: npm包的貢獻是無償?shù)模鄶?shù)是義務(wù)維護,如果出現(xiàn)git庫轉(zhuǎn)交,引入安全漏洞,沒有團隊能承擔安全管理職責
性能: 安裝慢,異常難以察覺
npm 是按照隊列執(zhí)行每個 package,也就是說必須要等到當前 package 安裝完成之后,才能繼續(xù)后面的安裝。
安裝的時候,包會在同一時間下載和安裝,中途某個時候,一個包拋出了一個錯誤,但是npm會繼續(xù)下載和安裝包。因為npm會把所有的日志輸出到終端,有關(guān)錯誤包的錯誤信息就會在一大堆npm打印的警告中丟失掉,并且難以捕捉到包安裝過程中的實際錯誤;

4.配置項/命令

npm root -g  //查看安裝目錄
npm config get prefix //查看prefix配置信息
npm config get cache //查看cache配置信息
npm config get prefix| npm config get cache //修改全局和緩存路徑
npm config set registry https://registry.npm.taobao.org --global //設(shè)置npm鏡像源
npm config set disturl https://npm.taobao.org/dist --global // 設(shè)置node源碼的源
npm config edit //快捷修改.npmrc配置文件
npm list //列出已經(jīng)安裝的全局包
npm outdated //查看npm是否有升級
ls ~/.npm //列出已經(jīng)安裝的包

5.npm yarn tink這三個包管理,各自的優(yōu)缺點

npm5 yarn tink
速度 ??比yarn略慢 ???? 開箱即用
下載方式 網(wǎng)絡(luò)下載 緩存讀取 自動下載安裝修復(fù)
版本 寬松 統(tǒng)一 -
語義化 ?? ???? -

tink: 一個處于測試階段的包管理工具 https://www.infoq.cn/article/R*5JRVuOOHBRlw411PlZ
因為tink很大程度上不同于npm/yarn 因此沒有做很多方面的比較

  1. npm的發(fā)展
npm3

所有模塊都安裝在node_modules下,解決方案還是以前的嵌套解決方案。

npm5

沒查到node_modules具體怎么裝
npm install 默認保存到package.json的 depandence中
package-lock.json 具備跨包管理器兼容性
這意味著將鎖定正在使用的依賴包的版本,消除關(guān)于不同軟件包版本的棘手問題。
【點擊查看】 你需要知道的npm5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容