2017-10-09 13 views
3

私はコードをgitリポジトリにチェックインするデプロイメントプロセスを持っており、デプロイスクリプトが本番サーバ上で実行されます。そのサーバーでは、sshと.pemキーを使ってgitに接続し、gitからpullし、npm installし、webpackをビルドしてサービスプロセスを再開します。gitからssh経由でデプロイするときに、package-lock.jsonをどのように扱うべきですか?

私はprodサーバーから何もコミットするつもりはありません。自動的に展開できるはずです。ただし、package-lock.jsonファイルはnpm installを実行すると頻繁に更新されるため、次回の展開時にgit pullステップが失敗し、コミットされていない変更があるため、既存のpackage-lock.jsonファイルと競合します。

私の現在の解決策は、package-lock.jsonファイルを.gitignoreすることです。しかし、それは私の開発マシン上のビルドと同じビルドを提供するという目的を破っています。

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.jsonpackage-lock.jsonを上書きします。つまり、~2.1を使用し、そのパッケージの2.2バージョンがある場合、運用環境の展開がアップグレードされます。

  1. のみを使用して非接頭辞、特定のバージョン番号(対2.1〜2.0)あなたのpackage.jsonで:

    あなたが未来からじゃないと仮定すると、ここでは二つの異なる考え方があります。

  2. npm install --no-save ...ロックファイルの下敷きの問題は無視されますが、私はと考えるとpackage-lock.jsonが更新されないようにします。
+0

#1が「あまり良くない」の理由について少し言いたいことはありますか?特に、ビルドの再現性が非常に重要で、パッケージロックはロックされません。 – eflat

関連する問題