javascript - 插入符号范围和 package-lock.json:如何使用它们获得最新的非破坏版本?
问题描述
我明白了package-lock.json
代表什么,但我不明白添加此文件后插入符号范围如何工作?
假设我有一个包 ( my-module
),我想拥有所有新的非破坏版本而不手动指定新版本。我安装了最新版本,这是package.json
文件中的结果:
"my-module": "^4.1.1"
但是package-lock.json
,也通过修复 to 的版本进行了my-module
更新4.1.1
。
下次出新版本时my-module
: 4.1.2
。运行npm i
不会安装,因为里面的版本是package-lock.json
固定的旧版本。
问题
我怎样才能在不创建新文件的情况下npm i
下载最新的非破坏版本?该文件是否只是使用插入符号范围无效?my-module
package-lock.json
解决方案
虽然我不喜欢逐字发布文档,但我认为它是解释为什么您所要求的正是package-lock.json设计为不必要做的最佳来源:
package-lock.json会为 npm 修改node_modules树或package.json的任何操作自动生成。
它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。
当package.json被输入到npm i
操作的结果是一个文件系统node_modules ,与package.json文件中声明的所有依赖项一致。
此操作不会始终产生相同的结果:即使使用完全相同的package.json文件也是如此。这样做是有充分理由npm i
的,特别是:
- 如果自上次安装包以来可能已经发布了直接 semver-range 包的新版本,则将使用更新的版本。
推荐阅读
- c# - Visual Studio 19. 不要添加 webasm 服务
- angular - 使用 @Output 从子组件更改父变量
- windows - 创建 VBS,使用当前用户的用户名、计算机名称和多个 IP 地址创建一个消息框(有线/无线/vpn)
- java - 正则表达式匹配除两个括号之间的内容之外的所有内容
- heroku - 在 Heroku 上使用 Travis CI 运行测试
- ansible - 带有 winrm 的 Ansible 只能以 root 身份工作?
- javascript - localStorage 可以将值分配给与其内置方法同名的键,如何对我的对象执行相同操作?
- python - 正则表达式开头的可选匹配组始终为空
- wordpress - 将模板管理的数据保存到插件以进行模板替换
- javascript - HTML DOM 有我没有通过 Javascript 添加的数据