我刚刚看了一个演讲,演讲者建议跑步:
npm config set ignore-scripts true
这样包的安装后脚本和预安装脚本就不会运行。这样,您就可以避免恶意软件包中的病毒。
我的问题是:运行此命令后,我必须对 npm 安装包并让它们在项目中工作执行任何不同操作吗?
如果在使用 npm 时运行此命令没有额外的不便,那么运行它就不会有缺点。它只会帮助您避免病毒。
如果是这种情况,为什么这不是默认设置?
我问是因为我假设通过忽略包脚本,npm 包的行为会有所不同,并且必须手动执行更多操作。
我同意这里的@RobC。它还完全停用了在我的package.json
中运行自定义脚本,这显然是一个交易破坏者,因为您无法再定义和运行自定义脚本。
尽管考虑这些安全问题可能很有用,但我认为运行npm config set ignore-scripts true
并不是正确的选择。我也运行了它,最终将其关闭以继续运行我的自定义包脚本。
所以视频中的建议最终不太合理,我想......
如果你想安全,请使用"--ignore-scripts"或配置设置,但也使用can-i-ignore-scripts。
它可以帮助您找出存在哪些脚本(尤其是在安装新依赖项时(,但会阻止自动执行与您已经使用的库的新版本一起出现的新脚本。
当某些依赖项需要运行脚本来使用 node-gyp 构建特定于平台的代码时,我遇到了类似的问题。
最好在每个项目中有一个忽略脚本的选项,以启用特定的脚本进行构建。
到目前为止,决定在.npmrc
中全局保留 ignore-scripts = true,并在我的项目中使用一个额外的脚本,基本上是这样做的:
#!/bin/bash
set -e
npm explore sqlite3 -- yarn run install
npm explore bcrypt -- yarn run install
附言纱线没有explore