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

Dav*_*ave 6 javascript dependencies node.js npm

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

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

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

Ben*_*nyó 12

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

find node_modules/ | grep binding.gyp || echo pure
Run Code Online (Sandbox Code Playgroud)


alm*_*pal 3

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

如果它包含类似的东西

 "scripts": {
    "install": "make build",
 }
Run Code Online (Sandbox Code Playgroud)

以及根目录中的 Makefile,该包很可能具有一些必须编译和构建的本机模块。许多包包含一个 Makefile 仅用于编译测试。

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

也就是说,许多模块已更新为可直接安装,无需在 Windows 上构建。然而,不能保证所有套餐都如此。

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