Node.js / npm – 无论如何告诉如果一个包是纯JS还是不是?

我注意到在试图用npm安装看起来很简单的节点包(例如神经 ,一个“微框架”)时,我经常遇到某种forms的依赖性疼痛。 经过一番深入的研究,我对bcrypt模块进行了深入的研究,这个模块显然是用C / C ++编写的,必须在软件包pipe理器下载后才能编译。

不幸的是,似乎如果你想在Windows上工作,答案是(从一个bcrypt问题线程)“安装一个Linux VM”。 所以在今天早些时候,我就这样做了,并开始运行到其他依赖项(即使安装了GCC,您甚至还需要安装一些未命名的apt套件 ,然后才能看到另一个C编译器错误)其他不能find“Arrays.c”我想),我实际上放弃了,反而从神经转为expression。 具有讽刺意味的是,在Linux和Windows上使用npm安装更大,更复杂的express没有任何问题。

所以,我的问题是:是否有任何filter/依赖关系跟踪可用,让你看看如果一个包除了节点核心有额外的依赖? 因为对我来说节点的魅力是“Javascript里的一切”,而这种东西相当不愉快地驱散幻觉。 事实上,尽pipe我已经比C / C ++做了更多的工作,但是现在每当我看到“制造”某些东西的要求时,我通常就会朝另一个方向尖叫。 🙂

注意package.json中的“scripts”字段。

如果它包含类似的东西

"scripts": { "install": "make build", } 

和根目录下的一个Makefile,这个包很可能有一些本地模块需要编译和编译。 许多软件包只包含一个Makefile来编译testing。

对包文件的这种检查并不排除必须编译和构build某些依赖项的可能性。 这将意味着对package.json中的每个依赖项,它们的依赖关系等等重复这个过程。

这就是说许多模块已经被更新来安装,没有在Windows上构build,表示为一。 但是,不能保证所有的软件包。

使用Linux VM似乎是最好的select。 在Window上开发Node.js应用程序可以让你一步一步地安装VM,Node.js和Express。

第一个解决scheme不会告诉你是否依赖使包不纯​​或不。 更好地searchgyp生成的输出:

 find node_modules/ | grep binding.gyp || echo pure 

节点不是“一切javascript”,因为扩展节点核心的一种方法是编写c / c ++插件。

所以Node是一个围绕使用V8的c / c ++模块的javascript包装器。

你怎么能在纯JavaScript中编写高效的数据库驱动? 这将是可能的,但速度缓慢。

至于filter,则由作者来logging他的包装。 没有自动filter。