当前位置: 首页 > 知识库问答 >
问题:

当我通过SSH从git部署时,应该如何处理package-lock.json?

闾丘才哲
2023-03-14

我有一个部署过程,在这个过程中,我将代码签入git存储库,并通过web钩子在生产服务器上运行部署脚本。在该服务器上,我使用ssh和.pem键连接到git,从git拉出,npm安装,构建webpack并重新启动服务进程。

我从来不打算从prod服务器提交任何东西--它们应该能够自动部署。但是,这不起作用,因为package-lock.json文件在运行npm install时经常更新,因此下次部署时,Git Pull步骤失败,表示我与现有的package-lock.json文件冲突,因为它有未提交的更改。

我目前的解决方案是.gitignore package-lock.json文件。但这违背了它的目的,即提供与我的开发机器上相同的构建。

处理package-lock.json的正确方法是什么?

共有1个答案

微生俊捷
2023-03-14

关于您的package.lock更改的原因,有一个有用的StackOverflow问题/答案。最接近最有用的答案似乎是提到了一个NPM bug,它在2017年10月在这里出现了很多活动。

但是当前,package.json覆盖了package-lock.json,这意味着如果您使用~2.1,并且该包有2.2版本,那么您的生产部署将得到升级。

假设你不是来自未来,这里有两种不同的想法:

    null
 类似资料:
  • 我使用托管Gitlab来托管我的Git存储库,最近我使用它来构建/部署PHP和Java应用程序到服务器。 我想做的是,一旦构建完成,使用SSH部署应用程序。有时,这可能只是通过SSH将最终构建的内容(PHP文件)上载到服务器,或者有时它可能是上载已编译的文件。jar文件,然后在远程服务器上执行命令以重新启动服务。 我已经将我自己的Docker容器设置为构建环境,这包括Java、PHP、Compos

  • 我使用的是Netty 4.0.33-Final中的LengthFieldBasedFrameDecoder类。 我正在开发的软件可以在没有Netty的帮助下与电视通信,所以我在这里以非传统的方式使用Netty。我只是使用Netty作为解码器和通道管道来解码来自各种不同设备的消息。那至少是我的目标。 问题是LengthFieldBasedFrameDecoder将长度字段解释为十六进制值0x38,并

  • 我正在玩,它从您在命令行上指定的文件中读取行: 如果它不能读取其中一个文件名,它会抛出(也许有一天它会有更好的异常类型,这样我们就可以用方法获取文件名)。好吧,抓住那个: 所以这捕获了错误,但仅此而已。尝试块在这一点上完成。它不能并尝试下一个文件: 回到Perl5Land,您会收到一条关于错误文件名的警告,程序将继续进行下一步。 如果存在一些参数,我可以先过滤,然后重建: 尽管它默默地忽略了坏文件

  • 我有一个Play 2.0.1应用程序,正在通过spring data binder掌握表单处理的窍门,如文档中所述。我有一个表单,假设一个用户给另一个用户发送消息,看起来像这样: 我的自定义绑定器确保用户(由他的id以超文本标记语言-form表示)得到正确的序列化,并且当不存在这样的用户时默认为空。 我正在考虑编写额外的验证,即确保通过表单传递的用户是试图发布消息的用户的朋友。这基本上是一种-注释

  • 我正在使用Maven将WAR文件部署到AWS。我计划使用'MVN Deploy',这将把war文件ssh到AWS。我关注http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ssh-external.html。 这是我的POM文件 但是当我运行mvn clean deploy时,我收到了这个… 提前谢了。

  • 现在,我正在使用msysgit使用SSH处理存储在ec2 Amazon云服务器上的我自己的私有存储库。 到目前为止,我已经能够通过Git Bash成功地连接到这些存储库(使用ssh-keygen创建ssh-rsa公钥和私钥,将公钥添加到远程机器上的授权的_服务器),因此我可以克隆、推、拉、通过CLI。 现在,我已经看到了适用于Windows的Github,我必须说,这是一款漂亮的软件。由于它基于m