大型生产应用程序的插入符,波浪号或固定package.json?

时间:2019-03-19 16:08:37

标签: javascript reactjs npm

我在生产中有一个大型的React应用,我想知道是否最好将固定版本用于我的软件包?我听说使用插入符号(^)是一个好习惯,但是在我看来,这会将应用程序开放给更多的错误?

我已经在这个问题上进行了很多搜索,并且似乎在^和固定版本之间存在分歧。 (npm)文档中某处是否有关于使用哪种方法的明确答案?

1 个答案:

答案 0 :(得分:0)

在开发过程中,您可以选择自己喜欢的任何一种,但是我建议在开始测试应用程序之前,投入生产之前进行收缩包装。锁定依赖项:

npm shrinkwrap
  

此命令将package-lock.json的用途重新设置为可发布的npm-shrinkwrap.json或仅创建一个新命令。然后,通过此命令创建和更新的文件将优先于任何其他现有或将来的package-lock.json文件。有关npm中包锁的设计和用途的详细说明,请参见npm-package-locks

这样,您可以保留package.json中声明的依赖项(波浪号/插入符),但是npm-shrinkwrap.json中声明的确切版本将仅在npm安装时使用。

在进入生产之前,我个人遇到了一个问题,当用~(更严格的声明)声明的依赖项被更新并引入了一个错误(补丁/错误修复不应该发生) 。它只发生过一次,但我不想诱惑命运。

您始终可以通过以下方式来更新npm-shrinkwrap.json:首先执行npm update <package_name>,指定需要更新的软件包,然后重新执行npm shrinkwrap,以更新现有的npm-shrinkwrap.json

...并且不要忘记npm ci