我们的团队刚刚更新到npm @ 5.将package-lock.json
在Windows和Mac(某些依赖关系是可选的,所以它们不会安装在Windows,但他们在Mac上),因此,无论机器,我们会产生同node_modules结构之间的统一.那很好,然后每个团队成员都经历了以下步骤:
rm -rf node_modules
git pull
npm install
对于所有团队成员来说,这实际上是完美的,除了一个package-lock.json
在之后进行了修改的团队成员npm install
.修改后的一条线就是删除了"requires": true
.
所以我看到:
{
...
"version": "0.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
...
}
Run Code Online (Sandbox Code Playgroud)
但他看到:
{
...
"version": "0.0.1",
"lockfileVersion": 1,
"dependencies": {
...
}
Run Code Online (Sandbox Code Playgroud)
有人知道为什么requires: true
可能会从package-lock.json
某些机器上的文件中删除,而不是其他机器上的文件?此外,对这个属性做什么的一点解释也不会有害.:)
提前致谢!
我的项目取决于analytics-node
哪个依赖于axios: "^0.16.2"
.
我们已被标记为npm audit
存在axios
漏洞,但已在0.18.1
.
但是,analytics-node
没有依赖于0.18.1
或更高版本的候选版本(只有测试版)。
我们已经尝试过:
npm audit fix
,npm update axios --depth 2
, npm install axios@0.18.1
我最困惑的部分是,既然版本应该兼容,为什么 npm 不允许我们覆盖analytics-node
版本。axios
我们公司有一些Web应用程序,这些应用程序依赖于一长串内部创建和托管的npm包(我们使用JFrog Artifactory),每个包都有自己的依赖项(等等).每当修复错误或在低级别包中实现功能时,当前进程需要开发人员检查他们的更改,等待CICD构建完成并测试运行,更新父包,并冲洗/重复所有链的方式(这可能是一个非常漫长的过程).
这可能不是一个独特的情况,但它会极大地影响我们的生产力,并鼓励单片程序包开发限制更新程序包的数量,而不是正确的代码分离.
我只能想到两个解决方案:
1)更新Web应用程序以直接在package.json中使用传递依赖项.然而,这打破了"封装",因为Web应用程序不应该知道直接依赖关系如何管理其作业.如果直接依赖性稍后使用某些其他传递依赖性,则不应该将Web应用程序引用到现在不相关的包.
2)修改Web应用程序的package-lock.json以指向新版本的传递依赖项.然而,这似乎只是临时工作,因为合并冲突或直接依赖的新安装往往会恢复这些更改.
我意识到答案可能是优化构建/发布过程,减少痛苦和手动,但我希望其他人可能遇到了不同的解决方案.
仅供参考 - 默认情况下,所有依赖项都以"〜"作为版本前缀安装.
我得到的是什么package-lock.json
,但我不明白添加此文件后插入符号范围如何工作?
假设我有一个package(my-module
),我希望拥有所有新的非破坏版本,而无需手动指定新版本.我安装了最新版本,这是package.json
文件中的结果:
"my-module": "^4.1.1"
但是package-lock.json
也正在更新修复my-module
to 的版本4.1.1
.
下次出现新版本my-module
:4.1.2
.跑步npm i
会不会把它安装在该版本package-lock.json
被固定在旧版本.
如何npm i
在my-module
不创建新package-lock.json
文件的情况下下载最新的非破坏版本?这个文件是否因使用插入符号范围而无效?
Github 最近推出了一项功能,可以通知您package-lock.json
. 我想解决这些问题,但此处列出的大多数软件包都是我的依赖项的依赖项,因此不清楚需要package.json
升级哪个顶级(在我的 中列出)软件包才能解决该问题。
我意识到我可以进入 my package-lock.json
,找到包,跟踪它,直到找到 my 中的包package.json
,但是当我有几十个包需要更新时,这似乎不必要地乏味。编写一个脚本来实现自动化也不会太难,但在我进行这项工作之前,我希望有一个现有的工具或(理想情况下)npm 函数可以简单地给我答案。
因此,假设我不可能是第一个想要这样做的人,我的问题是:如何确定我中的哪个包package.json
导致我中列出了另一个特定的包,package-lock.json
而无需手动通过包锁并追踪每个包裹?
假设,我npm install
这样做,然后我更改节点版本,然后再次这样做npm install
,安装的软件包会package-lock.json
改变吗node_modules
?(假设同时 npm 注册表上的软件包没有更新)
有时人们会更改package.json
并忘记运行npm i
哪个将更新package-lock.json
,或者package.json
以package-lock.json
其他方式不同步。这是一个不在这里讨论/质疑的假设。我正在寻找一种可以帮助检测此类情况的工具。
您知道可以进行健全性检查的 npm 功能或第三方工具吗package-lock.json
?例如,它应该解决所有传递依赖项,并检查锁定文件中是否提到了它们,并且其版本在正确的 semver 范围内。npm i
它应该告诉您为了更新锁定文件而运行是否有意义,或者是否会为您提供(考虑传递性)npm ci
中定义的所有所需的依赖项。package.json
我认为这npm --loglevel verbose install --dry-run
将是一个合理的候选者,但它的输出没有提到package-lock.json
如果它在没有--dry-run
. 当然,一种选择是运行npm i
然后git diff package-lock.json
(或类似的),但这很脏。
我第一次收到来自 GitHub 的关于我的一些项目依赖项的潜在安全问题(标签:high-severity)的通知。这是示例消息:
在 package-lock.json 中发现的 url-parse 漏洞
这是建议的解决方案:
将 url-parse 升级到 1.4.3 或更高版本。例如:
"dependencies": {
"url-parse": ">=1.4.3"
}
Run Code Online (Sandbox Code Playgroud)
或者…
"devDependencies": {
"url-parse": ">=1.4.3"
}
Run Code Online (Sandbox Code Playgroud)
现在,我所做的只是npm outdated -g --depth=0
根据官方文档在我的终端中运行并执行npm -g update
命令来简单地检查任何过时的包(我也尝试使用 来定位依赖项本身npm update url-parse
)。一些软件包已成功更新,但似乎没有找到导致问题的软件包。我是否应该通过添加建议的代码行来手动更新它:"url-parse": ">=1.4.3"
?
最后,我应该在多大程度上关注此类警报?
谢谢!
我正在尝试运行这个命令:
npm ci
它返回这个错误:
npm ERR! pkg-dir not accessible from find-cache-dir
我在这里缺少什么?
我曾节点版本10安装在我的系统,从版本6升级我的NPM至7版本我不能安装依赖后,和我得到的错误,所以我只好我的节点降级到6,(包括npm ci
和npm i
不及格)我正在测试的项目是这样的:
https://github.com/Giveth/feathers-giveth
错误是这样的:
npm ERR! code 128
npm ERR! git dep preparation failed
npm ERR! command /Users/username/.nvm/versions/node/v10.23.0/bin/node /Users/username/.nvm/versions/node/v10.23.0/lib/node_modules/npm/bin/npm-cli.js install --force --cache=/Users/username/.npm/_cacache --prefer-offline=false --prefer-online=false --offline=false --no-progress --no-save --no-audit
npm ERR! npm WARN using --force Recommended protections disabled.
npm ERR! npm ERR! code 128
npm ERR! npm ERR! command failed
npm ERR! npm ERR! command git clone --mirror -q ssh://git@github.com/gulpjs/gulp.git /Users/renjer/.npm/_cacache/_cacache/tmp/git-clone-dfb83c15/.git
npm ERR! npm ERR! fatal: destination path '/Users/username/.npm/_cacache/_cacache/tmp/git-clone-dfb83c15/.git' already exists and is not an empty …
Run Code Online (Sandbox Code Playgroud) npm ×9
node.js ×5
package.json ×4
javascript ×2
node-modules ×2
npm-install ×2
artifactory ×1
dependencies ×1
github ×1
security ×1