npmでサードパーティのパッケージを利用する

npmと制限

hmEdgeJSで利用するnodeと、npmでインストールするモジュールの
「想定バージョン」「x86 or x64」が一致すると利用することが出来ます。

  • JavaScriptだけで構成されているモジュールは概ね動作

    通常であれば、JavaScriptで構成されているモジュールは、nodeの必要バージョンを満たしてさえいれば、利用できることが期待できます。

  • C言語のソースのコンパイルを必要とするネイティブなモジュールは概ねダメ

    一方で、C言語のソースのコンパイルを要するもの(自動コンパイルも含む)は、
    利用出来ないことが多いハズです。

    理由としては、秀丸のデフォルトがx86=32bit版なのに対し、
    node.jsのデフォルト版はx64版ですので、
    x86とx64のビット数が食い違ったり、同じビットであったとしても、nodeのバージョンの食い違いで、
    ABI(アプリケーションバイナリインターフェイス)が一致しないことによる不具合です。

npmで、「実行するマクロファイル」「実行する.js」とカレントディレクトリと見立ててパッケージをインストール

PICTURE

PICTURE

利用可能か確認してみる

mytest.mac
#NODE = loaddll( hidemarudir + @"\hmEdgeJS" );

#r = dllfuncw( #NODE, "DoFile", currentmacrodirectory + @"\mytest.js" );

freedll(#NODE);
mytest.js
var to_json = require('xmljson').to_json;
 
//XML文字列を作成
var xml = '<myData>' +
            '<tag1>value1</tag1>' +
            '<tag2>value2</tag2>' +
            '<tag3>value3</tag3>' +
          '</myData>';

function display(error, data) {
    console.log(data);
}

to_json(xml, display);