node-sass 依賴下載失敗問題解決
修改 npm、yarn、pnpm 下載的源即可,以 yarn 為例
yarn config set sass_binary_site https://mirrors.huaweicloud.com/node-sass/
Npm簡介
常見的命令解釋:npm install xxx --save和npm install xxx --save-dev (兩個都是安裝指定的依賴包,前者是會在package.json中的“dependencies”中顯示,在開發環境和生產環境都會被安裝。后者是會在package.json中的“devDependencies”中顯示, 只會在開發環境才會去安裝該依賴包)
例如:eslint相關的依賴包只會在開發環境中配置,所以要注意📢一些只有開發環境才會使用的要使用-dev
版本號問題
1.2.3 1 代表的就是主版本(主版本的升級一般是重大的變更,相互之間的依賴都會不小的影響,比如: webpackV5 不少構建工具版本不同步會出現進程失敗的問題) 2 代表的就是次版本(一般是些新功能不怎么影響,無感知的)3 代表的補丁版本(bug)
~1.2.3: "~"代表只更新補丁版本,比如當前:~1.2.0 再次更新 如果有最新的 1.2.3 就會更新到 1.2.3版本 1.3.0則不會自動更新
^1.2.3: "^"代表更新此版本和補丁版本,比如當前:^1.2.0 再次更新 如果有最新的1.3.2 就會更新到 1.3.2版本 2.0.0則不會自動更新
1.2.3:什么都不寫就是鎖定版本,指定只是用當前版本不會自動更新最新版本。
package.json 和 package-lock.json
package-lock.json:當前node_modules中的版本就是按照lock.json中的鎖定版本進行安裝的依賴。
npm 舊版本之前是不會生成package-lock.json的,這是之前和yarn區別比較大的地方,因為yarn是有yarn-lock的。(后續npm推出lock后其實和yarn的區別並不是很大了,唯一的區別就是快慢的問題 Yarn是並行安裝依賴的 Npm是串行安裝)
這就是版本號和package-lock.json的關聯性,為什么會推出鎖定版本呢?答:為了保證項目的穩定性,防止依賴頻繁更新一些有bug的依賴導致穩定的項目出現問題。
還有就是package-lock.json很大就是因為依賴中還有引用依賴的那種套娃形式,全部都展開了標記上了指定的版本號。
為了統一公司的依賴版本就會將lock.json提交到git上,每次都會拉取下來保持版本的穩定,這個和yarn.lock是同理的。
Yarn和Npm的區別
其實上面也說現在唯一的區別就是安裝速度的問題咯(一個並行一個串行),其他問題基本沒什么太大區別了。
Cnpm和Npm的區別
說到快的話還有國內的Cnpm(淘寶鏡像),其實就是國內的機房下載文件了,不用FQ去國外下載了。
📢注意:Cnpm 有一個小細節問題,Cnpm是不會生成package-lock.json的,並且也不會去讀取package-lock.json的,所以cnpm安裝依賴的時候會每次都會安裝最新的包。
📢注意:一般情況下是不會出現比較嚴重的問題,比如:antd聖誕彩蛋問題,如果采用鎖定版本的lock可能就不會有問題了。
Pnpm和Npm的區別
pnpm也是我們現在主要使用的安裝方式,pnpm和上面的所有的區別就是“快 省”,pnpm是所有安裝方式中安裝速度最快的。
不會重復安裝同一個包,用 npm/yarn 的時候,如果 100 個項目都依賴 lodash,那么 lodash 很可能就被安裝了 100 次,磁盤中就有 100 個地方寫入了這部分代碼。但在使用 pnpm 只會安裝一次,磁盤中只有一個地方寫入,后面再次使用都會直接使用。
node_modules中的文件目錄也是非常清晰的,這是和上面那幾種生成的方式都是不同的。
還有就是支持monorepo的開發形式,后續可以再出一份關於Monorepo的項目管理方式的文章。(Vue3 源碼就是采用的Monorepo的項目管理形式開發的)
其他的基本上和上方的內容信息保持一致的。