質問: ブラウザ用に提供されるJavaScriptのライブラリ(jsファイル)を、node.jsで使いたいです。 何か方法はありますでしょうか? 具体的には、enchant.jsのクラスの実装がすごく便利なので、それをnodeで使いたいのです。 イメージとしては、browserifyの逆みたいな。 nodeモジュールだと、browserifyを用いてブラウザ用に変換できますよね、あれの逆です。 または、クラスの実装のみを提供するnodeのモジュールがあれば、教えていただけると幸いです。 どうかよろしくお願いします。
回答: ソースコードの実体がGitHubで公開されています。 そして件のClassは/dev/srcディレクトリ配下にあることを確認しました。 しかし第一行目が`enchant.Class = function()...`で始まっており、enchant変数が定義されておらずJSエラーで落ちるように思えます。 きっと何かしらのタスクランナーでJSファイル同士をconcatでくっつけているのでしょう。 という訳でプロジェクトルートを漁っていくとGruntfile.coffeeを見つけました。 Gruntはオワコンのタスクランナーですが、最終更新が2年前......ならばGrunt愛用者は結構いたと思います。 想像通り/dev/src配下の`_intro.js`→`header.js`→`Class.js`の順番にファイルをくっつけていますね。 従ってこのようなファイルを作成すれば動くんじゃないですかね? ``` // header.js の抜粋 // Classes.js を丸コピー module.exports = enchant.Class; ``` header.jsを抜粋とした理由ですが、 軽く確認した所、`window.addEventListener("message", function(msg, origin) {`という感じでwindowオブジェクトに働きかけていますが、Node.jsはwindowオブジェクトは存在しませんので、 header.jsを丸コピーしてくる場合は冒頭に操作を捨てるだけのダミーwindowオブジェクトを宣言する必要がありますし、 他の箇所もポリフィルばかりですので、enchant関数を抽出するだけで良いでしょう。 調べた所enchant.jsはMITライセンスでしたので、 作者に経緯を払ってリンクでも付けておけばどのように改変しても大丈夫です。 おまけ: 自分でビルドスクリプトみたいなのを作って自動生成する場合 GitHubのソースコードのページは、curlコマンド等でダウンロードするとページを構成する情報のHTMLがかぶさっているので邪魔です。 それの対策として生のファイルにアクセス出来る「Raw」ボタンがページ上部に存在していますので、 これをクリックすれば生のファイルのURLに遷移します。 自作のビルドスクリプトで、 まずこの/dev/src/Class.jsファイルのRawをダウンロードしてtmpディレクトリにでも突っ込んで、 そのファイルに宣言部の文字列をくっつけて自作のファイルにでもすれば良いでしょう。