当忽略脚本设置为 true 时,npm 的行为有何不同?



我刚刚看了一个演讲,演讲者建议跑步:

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

最新更新