观看一个很好的 YouTube 视频,其中提到了使用 NPM 包管理器的安全问题,我认为禁止包在安装时执行代码是有意义的。此 NPM 配置将执行以下操作:
npm config set ignore-scripts true
Run Code Online (Sandbox Code Playgroud)
但是随后定义的脚本package.json不会运行。包括npm start. 这很烦人。
有没有办法可以阻止包执行代码(如果我没记错的话,我认为这是安装后脚本)并且仍然允许package.json运行中定义的脚本?
只是要清楚:我DO要执行我自己的脚本。我不要想在一个执行的第三方脚本npm install。
在npm-install文档中指出:
该
--ignore-scripts参数将导致 npm 不执行 package.json 中定义的任何脚本。
所以,基本上当你安装一个包时,你需要附加--ignore-scripts参数以防止第三方包执行脚本,例如postinstall.
例如:
npm install <pkg_name> --ignore-scripts
Run Code Online (Sandbox Code Playgroud)
笔记:
我认为禁止包在安装时执行代码是有意义的。
这取决于,当使用--ignore-scripts参数忽略脚本时,您不能总是保证您安装的包将完全正常运行 - 这取决于postinstall例如在脚本中执行的任务。
--ignore-scripts参数具体说明要忽略哪些脚本。