繁体   English   中英

Node.js / npm - 无论如何判断包是否是纯JS?

[英]Node.js / npm - anyway to tell if a package is pure JS or not?

我注意到,在尝试使用npm(例如神经 ,一个“微框架”)安装看似简单的节点包时,我经常遇到某种形式的依赖性疼痛。 经过一番挖掘后,我对bcrypt模块进行了严格的跟踪,这个模块显然是用C / C ++编写的,必须在软件包管理器下载之后进行编译。

不幸的是,似乎你希望这个在Windows上运行,答案是(来自其中一个bcrypt问题线程)“安装Linux VM”。 所以今天早些时候我做到了这一点,并开始遇到其他依赖项(你甚至需要安装某些未命名的apt软件包才能考虑构建,尽管安装了GCC),然后最终看到另一个C编译器错误(关于某个软件包或其他人无法找到“Arrays.c”我认为),我实际上放弃了,而是从神经切换到表达。 具有讽刺意味的是,在Linux和Windows上使用npm进行更大,更复杂的快速安装没有一个问题。

所以,我的问题是:是否有任何过滤器/依赖关系跟踪可以让您查看一个包是否除了节点核心之外还有其他依赖关系? 因为对我而言,节点的诱惑力是“Javascript中的一切”,而这种东西很难消除错觉。 事实上,尽管我已经花了不少时间使用C / C ++,但每当我看到这些日子要求“制造”某些东西时,我通常会朝另一个方向尖叫。 :)

第一个解决方案不会告诉您依赖项是否使包不纯。 搜索gyp生成的输出要好得多:

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

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

所以Node更像是使用V8的c / c ++模块的javascript包装器。

你怎么能用纯JavaScript编写高效的数据库驱动程序呢? 它会有可能但很慢。

对于过滤器,由作者来记录他的包。 没有自动过滤器。

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

如果它包含类似的东西

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

在根目录中有一个Makefile,很有可能包有一些必须编译和构建的本机模块。 许多软件包只包含一个Makefile来编译测试。

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

这就是说许多模块已经更新安装,没有在Windows上构建,表示一个。 然而,所有包裹都无法保证。

使用Linux VM似乎是最好的选择。 在Window上开发Node.js应用程序为您提供有关安装VM,Node.js和Express的分步说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM