npm审计有纱线替代品吗?
Posted
技术标签:
【中文标题】npm审计有纱线替代品吗?【英文标题】:is there a yarn alternative for npm audit? 【发布时间】:2019-01-14 21:03:46 【问题描述】:需要 yarn 的 pinned resolution 功能,还想用npm audit
审计?有没有替代npm audit
的纱线?或者,或者,在npm
中固定依赖项的依赖项解决方案是否有效?
【问题讨论】:
查看我的帖子alfilatov.com/posts/… 随着情况的变化,您可能希望更改接受的答案。 目前接受的答案是现在只使用纱线 【参考方案1】:Yarn 没有npm audit fix
。
但这里是使用 npm
的方法 - 暂时。
-
在不安装节点模块的情况下生成
package-lock.json
文件
npm i --package-lock-only
-
修复软件包并更新
package-lock.json
文件
npm audit fix
-
删除
yarn.lock
文件并将package-lock.json
文件转换为yarn.lock
rm yarn.lock
yarn import
-
删除
package-lock.json
文件
rm package-lock.json
例如:
yarn audit
38363 vulnerabilities found - Packages audited: 908342
Severity: 38352 Low | 11 Moderate
(我知道。react-scripts
疯了...)
npm audit
npm ERR! code EAUDITNOLOCK
npm ERR! audit Neither npm-shrinkwrap.json nor package-lock.json found: Cannot audit a project without a lockfile
npm ERR! audit Try creating one first with: npm i --package-lock-only
npm i --package-lock-only
...
added 266 packages, removed 354 packages, updated 1653 packages, moved 1 package and audited 913793 packages in 54.304s
found 495 low severity vulnerabilities
run `npm audit fix` to fix them, or `npm audit` for details
npm audit fix
...
added 267 packages from 152 contributors, removed 355 packages and updated 1712 packages in 92.849s
50 packages are looking for funding
run `npm fund` for details
fixed 211 of 495 vulnerabilities in 913793 scanned packages
284 vulnerabilities required manual review and could not be updated
git status -s
?? package-lock.json
yarn import
yarn import v1.21.1
info found npm package-lock.json, converting to yarn.lock
...
success Saved lockfile.
✨ Done in 25.61s
rm package-lock.json
【讨论】:
太棒了,这正是我需要的,thnx 似乎yarn import
在使用引用其他本地包的monorepo 时不起作用。看起来它正在尝试从 npm 注册表中获取包。有什么技巧可以让它工作吗?
这个包npmjs.com/package/yarn-audit-fix是基于上面的答案把它变成一个单一的命令yarn-audit-fix
,所以它应该为你简化上面的内容。【参考方案2】:
yarn audit
/ yarn install --audit
从 yarn@1.12.0 开始可用
https://github.com/yarnpkg/yarn/releases/tag/v1.12.0
很遗憾,还没有--fix
选项,但作为解决方法,您可以使用https://www.npmjs.com/package/yarn-audit-fix
【讨论】:
如果你看到Command "audit" not found
升级你的纱线安装。 npm install --global yarn
npm upgrade --global yarn
目前没有yarn audit
的“修复”选项,就像npm audit fix
一样。在此处关注问题:github.com/yarnpkg/yarn/issues/7075
@Dylanw npmjs.com/package/yarn-audit-fix【参考方案3】:
是的,您可以使用yarn audit
来审核漏洞,但您不能像在npm audit fix
中那样使用yarn audit fix
来修复漏洞。
要修复yarn.lock
文件中的漏洞,您必须使用yarn add package_name
将包(带有漏洞)重新安装到其较新版本
你可以在这里阅读问题 => https://github.com/yarnpkg/yarn/issues/7075
【讨论】:
该线程被锁定,应该创建一个新线程。他们没有认真对待这一点。【参考方案4】:我认为它还没有准备好在纱线上。您可以参考以下问题。 https://github.com/yarnpkg/yarn/issues/5808
【讨论】:
同时接受的第 3 方替换怎么样? alfilatov.com/posts/…【参考方案5】:执行yarn audit
并找到有漏洞的包,
如果它们在您的 package.json 文件中
从那里修复他们的版本其他
它们是您的包的依赖项,因此请将其添加到 package.json 文件中"resolutions":
"**/package-name": "known-good-version",
"**/**/package-name": "known-good-version"
【讨论】:
【参考方案6】:您可以使用其他答案中提到的yarn audit
,但是,有一种不同的方法可以解决它们...
您将需要添加resolution
指令来指定解决漏洞的库的版本和依赖的路径(因为该库可以是另一个依赖的依赖,例如:
考虑下面一些 package.json 的一部分
"name": "project",
"version": "1.0.0",
"dependencies":
"left-pad": "1.0.0",
"c": "file:../c-1",
"d2": "file:../d2-1"
,
"resolutions":
"d2/left-pad": "1.1.1",
"c/**/left-pad": "^1.1.2"
更多详情可直接查看文档:Doc
【讨论】:
【参考方案7】:第一个
显然,始终使用源代码管理并首先签入您的package.json
以及yarn.lock
和/或package-lock.json
,然后从所有提交的文件开始,这样您就可以在需要时轻松回滚。
不向您的项目添加依赖项(也不安装第三方库)的解决方案怎么样?
从这种内置的交互式方式开始,轻松有选择地升级:
yarn upgrade-interactive
这可能满足您的所有要求。
奇怪的是,您可能会发现在该命令之后使用yarn audit
,您仍然有一些在命令yarn upgrade-interactive
中未提及的漏洞。在这种情况下,我首先会考虑:
yarn upgrade-interactive --latest
where that can be found
还是不够好?
yarn upgrade --latest
我已经看到了很多其他潜在的解决方案,之前我只是按照一些用户的建议从yarn
暂时切换到npm
,然后再切换回yarn
。这对我来说也很好。 (虽然烦人且不优雅)
有些软件包不需要安装即可运行。 这个我没试过,应该也不错:
npm_config_yes=true npx yarn-audit-fix
ref
这里的关键是您使用npx
来避免安装为依赖项。
更多的解决方案是可能的。 npm
和 yarn
都是包管理器,依赖管理是一件非常困难的事情,自动修复这些依赖总是一个难以解决的问题。因此,如果您有时间,我建议您对他们如何实际解决这些问题进行一些研究。你可能会发现自己不喜欢他们做事的方式。
最终,只要您可以回滚,您就可以尝试其中的很多方法并亲眼看看。有些包的严重性可能不需要修复,有时库还没有可用的解决方案,那么你需要考虑在你的代码库中删除它们的使用。从理论上讲,少即是多,对库的依赖更少,使用库,使用库......成为攻击者瞄准的一个小得多的表面。此外,不建议使用来自不受信任来源的库,npm
、yarn
等无法知道所有内容,也无法立即知道,所以也要考虑到这一点。
【讨论】:
【参考方案8】:Yarn 目前不支持修复,
解决方法
使用 npm 创建一个 package-lock.json 文件。 修复软件包 删除package-lock.json
。
.
npm i --package-lock-only
npm audit fix
rm package-lock.json
开始
yarn start
【讨论】:
以上是关于npm审计有纱线替代品吗?的主要内容,如果未能解决你的问题,请参考以下文章