語義化版本號
版本格式:主版本號.次版本號.修訂號,版本號遞增規(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 因此沒有做很多方面的比較
- npm的發(fā)展
npm3
所有模塊都安裝在node_modules下,解決方案還是以前的嵌套解決方案。
npm5
沒查到node_modules具體怎么裝
npm install 默認保存到package.json的 depandence中
package-lock.json 具備跨包管理器兼容性
這意味著將鎖定正在使用的依賴包的版本,消除關(guān)于不同軟件包版本的棘手問題。
【點擊查看】 你需要知道的npm5