ECMAScript系の汎用モジュールは、
「require関数で呼ばれる」ということを意識した作りのものが多くなっています。
そこで、本来は、v8エンジンには、require関数は存在しませんが、
特別な対処として、hmV8にはnodejsの実装に近い形でのrequire関数が実装されています。
requireの対象が、ファイル名やディレクトリ名もしくは「/」から始めた場合、
基点ディレクトリとなるのは「今実行中マクロ(.mac)のディレクトリ」です。
requireの対象が、「./」や「../」から始まる場合は、
基点ディレクトリとなるのは「hmV8.dllが存在するディレクトリ(通常は秀丸本体のディレクトリ)」です。
require( hm.Macro.Var["macrodir"] + "/" + "a.js")
などとすると、「秀丸のマクロ用ディレクトリ(設定してない場合、秀丸本体のディレクトリ)」、
require( hm.Macro.Var["currentmacrodirectory"] + "/" + "a.js")
などとすると、「秀丸実行中のマクロのディレクトリ、
というような「フルパス相当の文字列」で呼び出すことも出来ます。
もちろんこのような変数を使わず、
require( "C:/mydir/ccc.js" ) や require( "C:\\mydir\\ccc.js" )
といった完全に文字列リテラルでフルパスを直接記述することも可能です。
node.jsのrequire関数が、jsonファイルを読み込むことが出来る(jsonの内容に従ったJavaScriptのオブジェクトになる)のと同様に、
hmV8のrequire関数も、jsonファイルを読み込むことが可能です。
let data = require("aaa.json"); console.log(data);