---
# System prepended metadata

title: package-lock.json和package.json的作用

---

# package-lock.json和package.json的作用

[package-lock.json的作用](https://www.cnblogs.com/cangqinglang/p/8336754.html)

## package-lock.json

鎖定安裝時包的版本號，並且需要傳到git，以保證其他人在npm install時大家的dependencies能保證一致。

package-lock.json是在`npm install`時後生成一份文件，用以紀錄當前狀態下實際安裝的各個npm package的具體來源和版本號。

因為npm是一個用於管理package之間dependency關係的管理器，它允許開發者在package.json中間標出自己的項目對npm個庫包的依賴。

##### 舉個例子

```javascript=
"dependencies": {
 "@types/node": "^8.0.33",
},
```
裡面的向上符號^是定義 **向後(新)兼容依賴**，指如果@types/node的版本過8.0.33，並在大版本號(8)以上相同，就允許下載最新版本的types/node庫包。

因此npm最新的版本就開始提供自動生成package-lock.json功能，為的是讓開發者知道只要你保存了源文件，到一個新的機器上、或者新的下載源，只要按照這個package-lock.json所標示的具體版本下載依賴庫包，就確保所有庫包和上次安裝的一樣。

**最後**

在直接更新package.json和package-lock.json這兩個文件後，npm install是可以直接覆蓋掉原先的版本，所以在協作開發時，這兩個文件如果有更新，那開發環境應該要npm install一下。

