我在生产中有一个大型的React应用,我想知道是否最好将固定版本用于我的软件包?我听说使用插入符号(^)是一个好习惯,但是在我看来,这会将应用程序开放给更多的错误?
我已经在这个问题上进行了很多搜索,并且似乎在^和固定版本之间存在分歧。 (npm)文档中某处是否有关于使用哪种方法的明确答案?
答案 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