编写跨版本兼容的nodejs插件

时间:2015-04-07 16:55:04

标签: c++ node.js npm v8 node-gyp

我如何编写nodejs插件,它将支持nodejs的所有版本(至少所有稳定版本> 0.10.6)。例如,一个版本将String::Utf8Value name(args[0]);,而另一个版本将node::Utf8Value name(args[0]);。这只是一个示例,但我有很多场景,nodejs的不同版本会有不同的代码。 据我所知,这可以通过以下方式实现。

  1. 定义预处理器以检查哪个版本并相应地编译代码。
  2. if defined() //不确定究竟要检查什么

    include <nameser.h>

    else

    include <arpa/nameser.h>

    endif

    如果这是最好的选择(我不认为),即使添加多个地方的预处理器并且代码看起来很难看,我将如何实现这一目标。这意味着我如何在C / CPP插件中检查哪个版本的NodeJS。

    1. 为每个版本分别创建文件,并在binding.gyp内定义条件,以根据nodejs版本编译特定文件。如果这是最佳选择,我可以参考哪个变量来检查nodejs版本。
    2. 在发布npm包时使用标记,以便用户可以安装其特定的nodejs版本。 Tag a published version。虽然用户必须检查nodejs,但非技术人员不会执行此操作,因此不应该是一个问题。我用这种方法看到的唯一问题是版本控制。例如,如果有一个必须应用于多个标签的修复,那么,对于每个标签发布,我必须指定不同的版本(不确定)。
    3. 任何其他方式我都可以实现这一点,我不知道,如果上述任何选项不是一个好的选择吗?

0 个答案:

没有答案