如何构建节点插件,以便它只能按名称而不是路径导入
How to build node addon, so that it can be imported only by name, and not path
当我通过创建标准 binding.gyp 和 运行 node-gyp build
构建节点附加组件时,addon.node库在子目录 build/{Release|Debug}/
中创建。当我编写测试或其他 javascript 代码以使用此模块时,我必须给出库位置的显式路径
例如,
var addon = require('./build/Release/addon')
但是,我想通过仅指定模块名称并让节点的模块搜索库来做到这一点
var addon = require('addon')
如何实现?
我认为唯一的方法是设置 require()
并将模块放在 node_modules
文件夹中,或者将模块放在父目录之一的 node_modules
文件夹中.
Node 使用require()
方法,没有定义路径作为指标,在node_modules
目录中查找模块。除非它是一个本地模块。
文档中有详细说明 here。
如果您不介意另一个依赖项,那么有一个模块可以解决这个问题。
https://www.npmjs.com/package/bindings
这将自动搜索所有可能的构建输出位置,包括调试和发布目录。
当我通过创建标准 binding.gyp 和 运行 node-gyp build
构建节点附加组件时,addon.node库在子目录 build/{Release|Debug}/
中创建。当我编写测试或其他 javascript 代码以使用此模块时,我必须给出库位置的显式路径
例如,
var addon = require('./build/Release/addon')
但是,我想通过仅指定模块名称并让节点的模块搜索库来做到这一点
var addon = require('addon')
如何实现?
我认为唯一的方法是设置 require()
并将模块放在 node_modules
文件夹中,或者将模块放在父目录之一的 node_modules
文件夹中.
Node 使用require()
方法,没有定义路径作为指标,在node_modules
目录中查找模块。除非它是一个本地模块。
文档中有详细说明 here。
如果您不介意另一个依赖项,那么有一个模块可以解决这个问题。
https://www.npmjs.com/package/bindings
这将自动搜索所有可能的构建输出位置,包括调试和发布目录。