在将忽略脚本设置为true的情况下,npm的行为方式有何不同?

时间:2019-12-24 17:42:14

标签: node.js npm npm-scripts

我刚刚观看了talk,演讲者建议跑步:

npm config set ignore-scripts true

,以便不运行软件包的安装后脚本和预安装脚本。这样,您就可以避免在恶意软件包中感染病毒。

我的问题是:运行此命令后,我是否必须做其他与npm install软件包不同的事情并使它们在项目中工作?

如果使用npm时运行此命令不会带来任何其他不便,则运行它不会带来任何不利影响。它只会帮助您避免病毒。

如果是这种情况,为什么不将其设为默认设置?

我问是因为我认为通过忽略软件包脚本,npm软件包的行为会有所不同,并且人们将不得不手动执行更多操作。

4 个答案:

答案 0 :(得分:3)

我在这里同意@RobC。对于我来说,它也完全禁用了在我的package.json中运行自定义脚本的功能,这显然很麻烦,因为您无法再定义和运行自定义脚本。

尽管考虑这些安全性问题可能很有用,但我认为运行npm config set ignore-scripts true不是正确的选择。我也运行了它,最后将其关闭以继续运行我的自定义程序包脚本。

所以,我想视频中的建议最终听起来不是太听起来

答案 1 :(得分:1)

尽管考虑这些安全问题可能很有用,但我不认为运行 npm config set ignore-scripts true 是正确的选择

答案 2 :(得分:0)

当某些依赖项需要运行脚本以使用node-gyp构建特定于平台的代码时,我遇到了类似的问题。

在每个项目的忽略脚本中启用一个选项以启用特定的脚本会很高兴。

到目前为止,我们决定在.npmrc中全局使用ignore-scripts = true,并在我的项目中使用一个额外的脚本,基本上可以做到这一点:

#!/bin/bash
set -e

npm explore sqlite3  -- yarn run install
npm explore bcrypt   -- yarn run install

p.s。毛线没有explore

答案 3 :(得分:0)

在我看来,演讲者建议这是一个陷阱。当我说 catch 时,意味着他试图吸引观众的注意力。他的全部要点是介绍他提供给您使用的内容。 我猜“npm config set ignore-scripts true”在他推荐的库或系统上工作得很好。这是我能看到的唯一解释。