发布于 2026-01-06 1 阅读
0

非常有趣的 NPM 包:is-positive、is-not-positive、is-negative、true。结论:我不知道该说什么。#116

非常精彩的 NPM 包

is-positive

is-not-positive

is-negative

true

结论

我不知道该说什么。 #116

最近我在浏览 NPM(什么?)的时候,发现了一些非常有趣且引人入胜的软件包。当然,我把最有趣的一个留到了最后😬。

is-positive

正是这个软件包开启了我对 NPM 上 683162 个软件包的深入探索(到我发布这篇文章时,这个数字可能已经更多了)。

事实证明,这个包确实会返回参数是否为正数。

const isPositive = require('is-positive');

isPositive(1);
//=> true
Enter fullscreen mode Exit fullscreen mode

这就是它的全部功能。我思考了一下这个软件包可能有哪些用途,因为显然有很多用途。

每周下载量为正

我在浏览DependentsNPM 提供的部分时(共有 4 个),发现了另一个隐藏的宝藏。

is-not-positive

这个软件包的功能与原软件包的功能完全相反is-positive。它的描述非常贴切。

不肯定的描述

is-negative

由于这是 JavaScript,非正数可能并不意味着负数,因此必须创建一个新的包来检查负数。

这个软件包的负面效果甚至从其每周的下载量就能看出来,其下载量远低于其更受欢迎的同类软件包。

每周下载量为负

true

有趣的部分来了。我是在输入了一些其他搜索词,比如“ ”和“ ”true之后,偶然发现这个的。结果发现,这实际上是Unix实用程序的移植版is-wrongwoahtrue

与所有 Unix 工具一样,它的用法很容易掌握。

var t = require('./true')
var myTrueValue = t();

console.log(myTrueValue === true); // Logs 'true'
Enter fullscreen mode Exit fullscreen mode

然而,我觉得这个软件包比其他软件包有点可疑,因为它使用了…… var。因此,我决定查看一下它在 GitHub 上的一些未解决的问题。你绝对想不到接下来发生了什么。

真正的关键问题

我感到被背叛了。

事实证明,代码中存在一个严重漏洞,这是Patrick Steele-Idem发现的,他花了几个小时才追踪到问题所在。

原来是另一个库中包含了以下代码,导致true返回false

require.cache[require.resolve('true')].exports = function() {
    return false;
};
Enter fullscreen mode Exit fullscreen mode

幸运的是,他很快就想出了一个解决办法。

setInterval(function() {
    if (require('true')() !== true) {
        // Fix it!
        require.cache[require.resolve('true')].exports = function() {
            return true;
        };
    }
}, 10);
Enter fullscreen mode Exit fullscreen mode

结论

总的来说,重新发现这些精彩的包裹对我来说是一次非常愉快的经历。我可能以后不会再这么做了。

文章来源:https://dev.to/ravernkoh/very-fascinating-npm-packages-7ib