2017-10-09 20 views
3

我有一個部署過程,將代碼檢入到git存儲庫中,並通過Web掛鉤在生產服務器上運行部署腳本。在該服務器上,我使用ssh和.pem鍵連接到git,從git中拉出,npm install,構建webpack並重新啓動服務進程。當我通過ssh從git進行部署時,應該如何處理package-lock.json?

我從不打算從prod服務器提交任何內容 - 它們應該能夠自動部署。但是,這是行不通的,因爲在我運行npm install時,package-lock.json文件經常更新,所以下次我部署時,git pull步驟失敗,說我與現有的package-lock.json文件衝突,因爲它有未提交的更改。

我目前的解決方案是.gitignore package-lock.json文件。但是這樣就會失去它的目的,提供與我的開發機器上的版本完全相同的版本。

什麼是正確的方式來處理package-lock.json

回答

1

有一個helpful StackOverflow Question/Answer about why your package.lock is changing。最接近最有用的答案似乎是參考NPM bug that's seeing much activity here in October 2017

但是目前,package.json覆蓋package-lock.json,這意味着如果您使用~2.1並且該軟件包的版本爲2.2,則您的生產部署將升級。

假設你從未來不是,有兩種不同的觀點在這裏:

  1. 僅使用非前綴,具體版本號(2.1〜VS 2.0)在您的package.json。 (這不是很好)
  2. npm install --no-save ......這並沒有解決鎖文件的底層問題被忽略,但我認爲將保持更新package-lock.json
+0

你能否說一下爲什麼#1是「不好」?尤其是當構建的可重複性非常重要時,並且包鎖不鎖定。 – eflat

相關問題