问题标签 [package-lock.json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
380 浏览

node.js - 如果我的 package.json 中没有使用插入符号(^)或波浪号(~),我还需要 package-lock.json 吗?

如果我总是在 package.json 中使用确定版本的包,那么 package-lock.json 有什么需要。或者提出这个问题的其他方式是,如果有人想使用 package-lock.json,为什么他们不能在 package.json 中使用确定版本的包(1.2.3 而不是 ^1.2.3)。

0 投票
2 回答
773 浏览

node.js - 如果 npm 已经有 npm-shrinkwrap.json 用于锁定目的,为什么还要创建 package-lock.json?

npm- shrinkwrap.json :锁定 node_modules 树以及依赖项和嵌套依赖项,以防止包代码在其他机器上中断。

package-lock.json:锁定 node_modules 树以及依赖项和嵌套依赖项,以防止包代码在其他机器上中断。

那么,如果 npm 已经有npm-shrinkwrap.json用于锁定目的,为什么还要创建package-lock.json呢?

为什么他们创建新的package-lock.json文件来解决 npm 版本兼容性问题,因为开发人员已经在使用npm-shrinkwrap.json

任何简单,简单且解释清楚的示例答案?

0 投票
1 回答
141 浏览

npm - 为什么 package-lock.json 会用通用版本更新?

为什么我的 package-lock.json 会从特定版本更新到 GENERIC 语义版本?

运行 npm install 后...

这是差异:

什么鬼???

这是一个实际的代码片段:

这个文件的重点不是描述你当前依赖树的精确快照吗?

我的 npm 版本是 6.4.1

0 投票
3 回答
5942 浏览

npm - 我可以从 package-lock.json 重新创建 node_modules 吗?

我从 github 克隆了一个包含 package-lock.json(但没有 package.json)的存储库。然后在 git bash 终端中,我转到目录并运行npm install,但我只收到一条消息,说没有 package.json,然后 package-lock.json 中的所有内容都被删除,因此除了项目名称和版本外,它基本上是空的。

我认为npm install在目录中使用 package-lock.json 运行足以重新创建 node_modules,但我是否严重误解了它的工作原理?顺便说一句,我有节点 8.12.0 和 npm 6.4.1,并且在 Windows 10 上运行。另外,我认为 package-lock.json 是在 unix 系统上创建的,所以在使用 package-lock.json 时可能会出现问题不同的操作系统?

我已经尝试运行npm init只是为了获取一个 package.json 文件然后运行npm install,但这仍然没有给我一个 node_modules 文件夹。

0 投票
1 回答
1153 浏览

javascript - 忽略 package-lock.json 中的某些包

我有一个难题,似乎找不到正确的解决方案。

我正在从事的当前项目使用 npm 来管理我们的包。我们已经有一段时间没有使用 package-lock.json 了,但需要重新包含它。

问题是,我们有一些通过 npm 安装的自定义包(例如“my-components”),其中包含我们的组件代码等。对于这些包,我们总是希望在执行“npm”时包含最新版本安装”。

我的问题是,有没有办法为 package-lock.json 排除某些包?或者这个问题还有其他解决办法吗?

理想情况下,除了我们的自定义包之外的所有包都将锁定到特定版本,然后我们的自定义包将始终从最新安装。

编辑:澄清一下,我遇到的主要问题是为了开发,我们没有提取自定义包的特定版本。我们只是拉动#dev 分支上发生的任何事情。对于特定版本,我们有一个版本号,但我们在那里很好。我们希望能够让我们的自定义包说“每当运行 npm install 时,总是拉取 dev 分支上发生的任何事情”,但我们希望所有其他包都锁定到特定版本。

0 投票
2 回答
8619 浏览

javascript - Package-lock.json - 需要 vs 依赖项

在依赖对象的 package-lock.json 中,我同时拥有requiresdependencies字段,例如

这两者有什么区别?为什么某些依赖项列在 中requires,其他列在 中dependencies,而其中一些列在这两个字段中?

0 投票
1 回答
410 浏览

node.js - NPM 包锁版本属性

有没有办法管理/同步 package-lock.json 文件中的版本属性?我的情况如下:

  1. 当我有一个新版本时,我手动更新版本属性 package.json,提交和推送。
  2. 在构建服务器上,npm install获取构建服务器所需的所有 deps 等。
  3. 但是,npm install还要更新版本属性package-lock.json以匹配 package.json 中的版本(这很好但为时已晚)。

我本可以npm install在第一步中使版本属性package-lock.json与然后提交和推送中的版本属性同步package.json,但是对我来说这没有意义(不是目的npm install,有人可以简单地忘记,等等。) . 我也知道我不应该手动更新 package-lock.json 文件。

  • 有没有更好的方法来处理这个?
  • 我正在使用 NPM 5.6版,我知道在5.7版中有一个新命令npm ci不会改变package-lock.json文件但也不能解决版本需要同步的事实,无论如何现在我想知道是否有在 5.6 版中处理此问题的一种方法。
0 投票
1 回答
2577 浏览

node.js - 为什么“npm install”会修改 package-lock.json?那为什么要把它提交给git呢?

当我在项目中运行“npm install”时,它通常会修改 package-lock.json,例如,如果我在另一台计算机上处​​理同一个项目(具有不同的节点或 npm 版本)。

但同时文档建议该文件应该添加到版本控制中(在我的例子中是 git):

https://docs.npmjs.com/files/package-lock.json

该文件旨在提交到源存储库中,并用于各种目的:...

那么我应该在切换工作机器或其他人时来回提交 npm 所做的更改npm install吗?这将是一场噩梦。

目前我只是放弃了 npm 对 package-lock.json 所做的任何更改,并且它运行良好。所以我不妨将它添加到.gitignore ...

我做错了吗?我应该npm ci改用吗?我不会称我的计算机为“CI”,它只是一台开发机器,我为什么要在那里使用它?

基本上我和这位先生有同样的问题:

https://github.com/npm/npm/issues/18103#issuecomment-370401935

(遗憾的是,我根本无法对该问题添加评论或创建新问题,npm 存储库已禁用问题)

0 投票
2 回答
8520 浏览

security - 如何更新 package-lock.json 中的依赖项

我第一次收到来自 GitHub 的关于我的项目的一些依赖项存在潜在安全问题(标签:高严重性)的通知。这是示例消息:

在 package-lock.json 中发现 url-parse 漏洞

这是建议的解决方案:

将 url-parse 升级到 1.4.3 或更高版本。例如:

或者……</p>

现在,我所做的只是根据官方文档npm outdated -g --depth=0在我的终端中运行并执行命令来简单地检查任何过时的包(我也尝试使用 来定位依赖项本身)。一些软件包已成功更新,但似乎没有找到导致问题的软件包。我是否应该通过添加建议的代码行来手动更新它:?npm -g updatenpm update url-parse"url-parse": ">=1.4.3"

最后,我应该在多大程度上关注此类警报?

谢谢!

0 投票
1 回答
3067 浏览

node.js - 如何防止“npm install”或“npm remove”删除我的个人包?

我想为node_modules/my-package/...我的一个图书馆提供一个环境。

package.json的被​​认为是有效的。我有一个名字和一个版本以及其他一些字段:

然后我想将它添加到package-lock.json文件中,以便 npm 知道它。如果您不这样做,则会删除npm install ...npm uninstall ...实际删除my-package我在node-modules/....

所以我决定在我的 中添加信息package-lock.json,只是我无法使其工作。我添加的只是这样的版本:

同样,语法本身是正确的。但是,使用该条目时,当我尝试执行npm install ...ornpm uninstall ...时,它会告诉我:

找不到错误 404:krypton-search@1.0.0

我究竟做错了什么?