如何在不禁用 package.json 中定义的脚本的情况下禁止 npm 包执行安装后脚本?

Zac*_*ith 6 npm

观看一个很好的 YouTube 视频,其中提到了使用 NPM 包管理器的安全问题,我认为禁止包在安装时执行代码是有意义的。此 NPM 配置将执行以下操作:

npm config set ignore-scripts true
Run Code Online (Sandbox Code Playgroud)

但是随后定义的脚本package.json不会运行。包括npm start. 这很烦人。

有没有办法可以阻止包执行代码(如果我没记错的话,我认为这是安装后脚本)并且仍然允许package.json运行中定义的脚本?

只是要清楚:我DO要执行我自己的脚本。我不要想在一个执行的第三方脚本npm install

Rob*_*obC 5

npm-install文档中指出:

--ignore-scripts参数将导致 npm 不执行 package.json 中定义的任何脚本。

所以,基本上当你安装一个包时,你需要附加--ignore-scripts参数以防止第三方包执行脚本,例如postinstall.

例如:

npm install <pkg_name> --ignore-scripts
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 第三方软件包安装完成后,您仍然可以运行在package.json中定义的自己的 npm 脚本。
  • 我认为禁止包在安装时执行代码是有意义的。

    这取决于,当使用--ignore-scripts参数忽略脚本时,您不能总是保证您安装的包将完全正​​常运行 - 这取决于postinstall例如在脚本中执行的任务。

  • 您不能使用该--ignore-scripts参数具体说明要忽略哪些脚本。

  • 这看起来像是 NPM 中的空白功能。我当然希望能够将允许运行脚本的包列入白名单?例如,节点 sass。 (2认同)
  • 是的,您可能是对的,但是 npm 中不存在您想要的功能。那么,这是否没有回答您的问题:_“我确实想执行我自己的脚本。我不想在 npm 安装期间执行第 3 方脚本”_? (2认同)