npm 和 yarn
npm 的全稱是 Node Package Manager(包管理工具)枯途,開發(fā)者會將自己開發(fā)的模塊上傳到npm 官網(wǎng),通過 npm install 就可供其他人使用
而 yarn 是為了彌補 npm 的速度慢而出現(xiàn)的
package.json 文件
-
創(chuàng)建 package.json 文件
npm init --yes # 或者 yarn init --yes
-
通過
npm install
或yarn add
后安裝的模塊就會被記錄在 package.json 文件中欺缘,如下面的 vue3 項目,提交項目時將 package.json 文件一同提交,當其他人使用時只需npm install
吟孙,npm 就會自動安裝這些需要的包"dependencies": { "vue": "^3.0.4", "axios": "^0.19.0" }, "devDependencies": { "vite": "^1.0.0-rc.13", "@vue/compiler-sfc": "^3.0.4" }
-
注意
可以看到當前
"vue": "^3.0.4"
版本,3.0.4 代表版本號聚蝶,3 代表打包本號拔疚,0 代表小版本號,4 代表補丁號既荚。版本號最后一位的變化代表 bug 的修復稚失,不會破壞和改變任何已有功能;小版本號的變化代表添加新功能恰聘,同樣不會破壞和改變任何已有功能句各,而大版本號改變時說明有較大的改動吸占,需要更新代碼來適配新的版本。^
符號的意思是向最新版本兼容凿宾,就是說npm install
時會自動安裝大版本號相同的最新的版本矾屯,原則上小版本號和補丁號更新不會影響包的功能,但如果因為某些原因影響了初厚,這樣就有可能出現(xiàn)問題件蚕,有人通過npm install
安裝時安裝完所有的包還是不能正常運行,所以需要一種東西來保證所有人安裝的版本是一模一樣的产禾,這就是package-lock.json
文件
package-lock.json 作用
通過 npm 安裝模板后排作,package-lock.json
文件會自動生成,記錄更精確的依賴包的各類信息
"axios": {
"version": "0.19.2",
"resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.2.tgz",
"integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=",
"requires": {
"follow-redirects": "1.5.10"
}
}
- version:版本
- resolved:下載來源
- integrity:該資源的標準子資源完整性
- requires:依賴包
- ...
這樣亚情,通過 npm 安裝時不僅會安裝相同版本號的包妄痪,而且包的下載源都是一樣的,這樣就保證了每次安裝下載的依賴版本都是一樣的
yarn.lock 作用
axios@^0.19.0:
version "0.19.2"
resolved "https://registry.npm.taobao.org/axios/download/axios-0.19.2.tgz?cache=0&sync_timestamp=1608609215811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
integrity sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=
dependencies:
follow-redirects "1.5.10"
總的來說yarn.lock
和package-lock.json
起的作用相同楞件,yarn 就是為了彌補 npm 的缺陷而出現(xiàn)的