当运行 npm install 命令的时候带上 ignore-scripts,会发生什么?
本文分享自华为云社区《运行npm install 命令的时候带上--ignore-scripts有什么好处吗?》,作者:gentle_zhou。
在 npm 依赖库里,当前有超过 130 多万的依赖包可以被下载使用(数据来源:https://en.wikipedia.org/wiki/Npm_(software) )。但其中会不会有一些是恶意依赖包呢,这真的说不定。
因此在 Predicting the Future of the Web Development (2020 and 2025)这场演讲中,推荐我们设置:npm config set ignore-scripts true:
或则就如我们标题里说的,在安装依赖包时,确保添加–ignore-scripts 后缀以禁止 npm 里第三方依赖包的预先安装脚本或则安装后脚本被执行;这样就可以避免一个恶意包里的病毒。
但是问题来了,有些依赖包就是需要这些预先安装脚本或则安装后脚本来配置环境;如果如果我们在下载的时候,命令里用了–ignore-scripts 后缀,那么是可以减轻恶意代码的危害,但同时也会导致下载的依赖包没有正常发挥作用。
那么我们如何知道什么时候可以使用–ignore-scripts 后缀享受它的好处呢?就是说我们怎么样可以预先了解哪些依赖包需要脚本文件,我们不能使用–ignore-scripts 后缀呢?
我们可以预先先去下载 can-i-ignore-scripts 这个依赖包:
A service and cli to analyze your dependencies and check what’ll break when you switch from npm ci to npm ci --ignore-scripts
can-i-ignore-scripts 工具,可以帮助我们分析各个依赖包是否可以使用--ignore-scripts 命令。该工具可以帮助我们确定哪些依赖包可以使用--ignore-scripts 命令;实际上呢,一些我们已经运行了几个月的脚本是没啥问题的,而该工具可以帮助我们确定新加入的依赖包是否可以加入到没问题列表中。
如何下载这个工具呢?很简单,可以直接在工具官网下载或则通过 npx 命令行 npx can-i-ignore-scripts (npx 是什么?后面计划会出一篇文章介绍一下;现在可以就理解成是 npm 的一个包执行器,能让 npm 包中的命令行工具和其他可执行文件在使用上变得更加简单)。
如何使用这个工具呢?我们去安装了 node_modules 包的目录下运行 can-i-ignore-scripts 命令去查看(下面是官方给出的例子):
参考资料
https://www.youtube.com/watch?v=24tQRwIRP_w&t=923s
https://stackoverflow.com/questions/59471962/how-does-npm-behave-differently-with-ignore-scripts-set-to-true
https://www.npmjs.com/package/can-i-ignore-scripts
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/6c18093b71fb839af4d249f81】。文章转载请联系作者。
评论