Atom エディタの自作パッケージで子プロセスを呼ぶ方法


概要

Atom エディタの自作パッケージで子プロセスを呼んで、子プロセスのコンソール出力を取得するサンプルコードを紹介します。

サンプルコード

結論としては、 Atom エディタは Node.js 動いているので、child_process モジュールを使って子プロセスを起動できるという話でした。下記コードでは child_process.execFile で実行ファイルを起動し、その結果を callback 関数で受け取って処理しています。

    # 子プロセス実行後に呼ばれるコールバック関数
    callback = (err, stdout, stderr) ->
      # エラーの時
      if err
        console.log stderr
      # 成功時
      console.log stdout
      return

    exec = require('child_process').execFile
    # 子プロセスを呼ぶ
    exec '[実行ファイルのパス]', callback

参考サイト

Execute an exe file using node.js
Node js child_process.execFile return
node.jsのchild_processのexecとexecFileとspawnの違い

動機

Atom エディタを使っていて自分用の追加機能が欲しくなり、プラグイン(Atom ではパッケージと呼ばれる)を自作する方法を調べました。すると Node.js & coffee script で作成する必要があることが分かりました。

しかしちょっとした拡張機能を作るのに新しいライブラリと言語を覚えるのはしんどいと思い。主要な処理は自分の慣れた言語で作ることにして、 Atom エディタ側で標準出力だけ受け取ることができれば手間が少なくてすむなと思いました。