问题标签 [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.
npm - npm install 不考虑 package-lock.json 中的注册表/解析路径
从私有注册表安装软件包非常简单:
这将添加一个条目到package-lock.json
:
到目前为止一切顺利,一切都符合预期。
现在的问题是,当您想使用npm install
. 这将失败并出现以下错误:
因此它尝试my-package
从公共 npm 注册表 ( https://registry.npmjs.org/my-package
) 中获取,但由于my-package
位于私有注册表中,因此当然会失败。
现在这真的打破了我对package-lock.json
.. 的理解。 npm 不应该package-lock.json
查看以前的包在哪里解决吗?相反,它只是假设它必须在公共注册表中。
另一个有趣的事情是,一旦您再次手动安装带有--registry
标志的软件包,它就可以工作:
之后它每次都会工作,直到您升级版本my-package
或切换设备..
我也尝试了npm ci
命令但没有成功(同样的错误)。
那么如何从私有注册表正确安装软件包,以便可以轻松地将它们安装在任何其他设备上使用npm install
?
json - 究竟什么时候使用 package-lock.json?
我知道拥有 .lock 文件的要点是它们包含特定版本的包(而 package.json 可以指定范围),这样当您在不同的机器上安装相同的项目时,您可以保证相同版本的包。
我想知道的:
什么时候使用 package.json,什么时候使用 package-lock.json?例如,如果捆绑器找到一个 package.json 文件但没有 package-lock.json 文件,它是否使用 package.json 并创建 package-lock.json,但如果找到它就使用 package-lock.json?如果是这种情况,那么我是否更正了,如果您从不重新生成 package-lock.json,即使您运行npm install
捆绑程序也不会安装 package.json 中 semver 范围允许的最新版本的软件包,而只是安装package-lock.json 的具体版本?
linux - npm install 不关心 package-lock.json
我在 jenkins 上的 npm install 安装了 package-lock.json 中未定义的软件包版本。
当我在本地(在 Windows 上)运行它时,它按预期工作,安装了 1.4.10 的 cleave.js 包。虽然,当我通过 jenkins 运行它时,它安装了一个不同的版本,1.5.3。
当我检查 jenkins 构建日志时,它看起来像是从缓存的二进制文件中安装包。
现在,我能想到的可能解决方案是我可以删除/var/lib/jenkins/.npm/node-sass/4.12.0/linux-x64-57_binding.node
这个文件,它应该可以工作。但我不确定这是否会破坏其他任何东西,或者这是否是要走的路。
任何帮助表示赞赏。
npm - 切换到 pnpm 时可以删除 package-lock.json 吗?
我正在从 切换npm
到pnpm
,它具有我喜欢的一组不同的功能。
前者用于package-lock.json
锁定确切的包版本,后者用于锁定pnpm-lock.yaml
。
根据文档,pnpm
ignores package-lock.json
,这似乎变得多余。因此,当用 更新软件包时pnpm
,这个文件根本不会被处理,很快就会过时。
我可以安全地删除package-lock.json
还是会遇到一些问题?从我的项目中删除这个文件会有什么缺点吗?
我npm
只是用来获取我的项目所需的工具和包(即 Gulp),而不是发布包到https://www.npmjs.com/
npm - 检查 NPM package.json 和 package-lock.json 是否兼容
有没有办法在不运行的情况下检查package-lock.json
文件是否兼容?兼容意味着指定的版本可以满足。package.json
npm install
package.json
package-lock.json
目前的方法
我目前正在通过运行npm install
并检查是否package-lock.json
像这样更改来检查这一点:
用例
我想在持续集成中添加一个测试,以确保如果开发人员修改package.json
他们也会package-lock.json
相应地更新。这很重要的原因是我们的持续集成使用npm ci
而不是npm install
. npm ci
only references package-lock.json
,因此如果开发人员不更新锁定文件,则持续集成设置将与他们期望的不匹配。
npm - package-lock.json 中的 npm "resolved"-fields 会随着 JFrog 工件不断变化
我们有一个私有的 JFrog 工件(名称在下面匿名),它在项目根 .npmrc -file 中配置了 npm:
开发人员之间通过 Git 共享的 package-lock.json 文件中的已解析字段在“npm install”运行之间不断变化,而 package.json 没有任何更改。
有时 dl 查询参数(指向完全相同的 URL)被添加到解析的 URL:
有时查询参数指向 npmjs.org 注册表:
有时该字段直接指向 npmjs.org 存储库:
这些变化中的任何一个也可能朝着相反的方向发展。
这真的很烦人,因为这意味着我们不断地在 package-lock.json 中进行无意义的更改,这会导致合并冲突并经常阻止 npm ci 正确执行。npm cache clean --force 似乎没有帮助。我知道 npm install 可以自动解决 package-lock.json 合并冲突,但这对 npm ci 没有帮助(因为重点是不要在 CI 环境中运行 npm install )。而且,无论如何,看看虚拟 npm 注册表如何在内部解析包有什么好处(我怀疑这里正在发生)?
是否有某种配置选项可以防止 JFrog Artifactory 对虚拟 npm 注册表中已解析的包 URL 进行此类更改?或者它可能是 npm 中的错误?
环境:
- npm 6.11.3
- JFrog Artifactory 6.10.6
git - 执行 git diff -- ':(exclude)package-lock.json' 时没有效果
我想做一个差异,但没有 package-lock.json ,它很大并且是一个生成的文件,所以对我来说没有什么有趣的。我都试过了:
但它只有零输出。我究竟做错了什么 ?我正在运行 git 2.21.0
npm - 如何在 package-lock 和 package json 中应用更改?
package-lock.json
我在和package.json
文件中手动更改了我的依赖项。我现在如何将这些更改应用到我的node-modules
而不更新/触及其他依赖项?
reactjs - 只是为了一劳永逸,您究竟如何更新工作存储库中的 npm 包?
抱歉,如果这是一个基本问题,我“有点”知道该怎么做,但同时不知道,并且已经在互联网上搜寻答案,但似乎没有一个解决方案有效。
具体来说,我问的是 github 何时告诉您有安全警报并且必须更新包锁定文件中的依赖项。你是如何在你的工作存储库中解决这个问题的?我试图简单地更新我的 React.js 存储库中的必要包,然后将包锁定文件推送到主分支,但无法找到一个简单的快速解决方案来执行此操作。
非常感谢您提前。