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"。所以今天早些时候我就是这样做的,并开始遇到其他依赖项(尽管安装了 GCC,但你需要在考虑构建之前安装某些未命名的 apt 包(,然后最终在看到另一个 C 编译器错误(关于某些包或其他无法找到"Arrays.c"我认为(,我实际上放弃了, 并从神经转向表达。具有讽刺意味的是,更大和更复杂的 Express 在 Linux 和 Windows 上使用 npm 安装,没有出现任何问题。
所以,我的问题是:是否有任何过滤器/依赖关系跟踪可以让您查看包除了节点核心之外是否还有其他依赖项?因为对我来说,node的魅力在于"Javascript中的所有内容",而这种东西非常不愉快地消除了这种错觉。事实上,尽管我所做的不仅仅是我使用 C/C++ 的时间,但这些天每当我看到需要"制造"一些东西时,我通常会尖叫着朝另一个方向跑。:)
第一个解决方案不会告诉您依赖项是否使包不纯。搜索 gyp 生成的输出要好得多:
find node_modules/ | grep binding.gyp || echo pure
注意 package.json 中的 "scripts" 字段。
如果它包含类似的东西
"scripts": {
"install": "make build",
}
和根目录中的 Makefile,包很有可能有一些必须编译和构建的本机模块。许多包包含仅用于编译测试的生成文件。
对包文档的这种检查并不排除必须编译和构建某些依赖项的可能性。这意味着对 package.json 中的每个依赖项、它们的依赖项等重复此过程。
也就是说,许多模块已经更新为安装,无需在Windows上构建,快速。但是,不能保证所有软件包。
使用 Linux VM 似乎是最好的选择。在 Windows 上开发 Node.js 应用程序提供了有关安装 VM、Node.js 和 Express 的分步说明。
不是"一切 javascript",因为扩展 Node 核心的一种方法是编写 C/C++ 插件。
所以 Node 更像是一个使用 V8 的 c/c++ 模块的 JavaScript 包装器。
例如,你怎么能用纯javascript编写高效的数据库驱动程序?这是可能的,但很慢。
至于过滤器,由作者记录他的包裹。 没有自动过滤器。
- 在jQuery中,如何测试一个元素是否是同一类的多个元素中的第一个
- 如何检查一个对象是否是“;深空”;
- javascript测试一个值是否是一个数字和一个大于0的数字
- 如何检查一个对象是否是“;子对象“;在Javascript中
- 当点击一个li中的图标时,我如何确定它是否是ul中的第一个li
- 我想比较一个值是否是“不可用”的javascript
- 将所有脚本保存在一个文件中是否是一种好的做法
- 查找一个对象是否是 javascript 中另一个对象的子集
- 寻找一个公式来检查数字是否是数字 2 或更大乘以数字 3 或更大的乘积
- 设置一个 if else 函数来检测它是否是元音
- 给定一个日期/时间字符串,w javascript/jquery,你怎么能确定它是否是今天
- 有没有办法在我的单元测试中测试一个对象是否“是”Backbone.Model
- 如何检查值是否是最后一个 CSV 条目
- 火狐扩展 - 我们如何检查这是否是一个内容脚本
- Node.js / npm - 无论如何,判断一个包是否是纯JS
- 如何创建一个接受输入的函数并测试它是否是回文
- js 文本文件的大小是否是其中的字符数加上一个
- 如何检查新克隆的节点是否是javascript中的最后一个节点
- “数据绑定”是否是一个严格的仅淘汰属性
- 确定两个字符串中的一个是否是另一个StringJavascript的子字符串