❝让我告诉你这个不起眼的包,它在过去一年中产生了超过 80 万的下载量。 ❞
这个npm包是-
我们在Runkit
尝试打印出它导出的模块,返回的是null
,这个npm包就是一个赤裸裸的空包
为什么需要下载它?
❝令人难以置信的是,人们实际上正在下载这个包。并且每个月的下载量都在增加。下图说明了自软件包在 npm 上发布以来的下载次数。 ❞
但是,如果这让您感到惊讶,请等到我告诉你更疯狂的部分。它被用作超过 60个npm包的依赖项。
我们随便打开一个依赖-
包的仓库,以black-ts为例子
这个-
包安静的躺在dependencies
依赖项,而且还是dependencies
!!!,突然觉得后背发凉
如果我告诉你,你也将它下载到你的项目中呢?它发生在你甚至不知道的情况下。也许它正静静地坐在你的package.json
现在。而你对此一无所知。也许你是 800,000 人中的一员,不信你可以检查一下
❝那么我们为什么会安装它呢? ❞
我们都知道为了安装npm包
,我们需要运行以下命令之一。但是,我们写的命令有很多种变体,但不一定都是对的。
npm i package
# or
npm install --save package
# or
npm i -g package
有时您过早按下空格键
,有时您忘记了一个字母。或者,如果你像我一样,有时最终会写出完全不同的东西。关键是,很容易打错字。注意-和g的间距
npm i - g package // ❌
也就是作者发现了我们这种行为方式,专门搞了这个-
包,真是个鬼才
最后作者Dmitry澄清说,虽然该软件包目前没有做任何事情,但他计划扩展它,当人们试图意外安装它时抛出错误消息。虽然这听起来毫无意义,但它最终可以为您节省1kb的包大小。
为什么-
包可能是危险的?
虽然-
现在没有危险,但如果你的项目中不小心安装到它,然后发布到生产,一旦存在安全漏洞,你的用户数据等等都会被窃取,妥妥的事故
所以一般公司都会配套代码检测工具等安全扫描工具,可以把关项目的安全,但是作为开发还是要提高自己的素养
参考文献
- https://www.npmjs.com/package/-
- https://www.npmjs.com/package/black-ts