スポンサーリンク

PHPStorm – File Watchersを利用したkramdown(Markdown)の自動コンパイル

世間では軽いと言われているPHPStormですが、Eclipseと比べてのことで、なんだかんだで重いです。そんな重いPHPStormでわざわざ軽量なMarkdownを使う必要はないのですが、Markdown内に記述したJavaScriptをデバッグするためにFile Watchersという機能を使ってみました。

Markdown内に記述したJavaScriptというのが意味不明ですが、コンパイル後のhtmlで実行させるためにMarkdownと一緒に記述しているだけです。そういえば、Markdownコンパイラの中には、JavaScriptをごっそりと消しくれるのもありました。GitHub Flavored MarkdownのWebサービスがそうですね。

File Watchersとは?

名前の通りですが、ファイルを監視して、それが更新されると設定したプログラムを自動的に実行してくれます。特定のファイルではなく、File type(拡張子)で監視されるので、Markdownだと、.mkdとか.markdownが更新されるとコンパイルする、といったことができます。

File Watchersの設定

PHPStorm > Preferences > Settingsを開き、File Watchersを選択します。

左下の+(追加アイコン)をクリックすると、テンプレートが表示されます。Markdown用のテンプレートはないのでcustomを選択します。

Edit Watcherが開くので、必要な項目を編集します。

  • Name: kramdown
    • 設定の名前(任意)
  • Dscriptioin: Compiles .kramdown files into .html files
    • 設定の説明(任意)
  • Immediate file synchonization:
    • オフにするとファイル保存時に実行されます。オンにすると更新時に即座に実行されます。オンは処理が重くなりますので、オフがいいかもしれません。
  • File type:
    • File type(拡張子)を選択します。.kramdownというファイルを監視したいのですが、ないのでFile Typesに追加する必要がありました。設定方法は、次のFile Typesの設定に書いてあります。
  • Scope: Project Files
    • 監視する範囲。
  • Program: /usr/bin/kramdown
    • 実行するプログラム。
  • Arguments: $FileName$
    • プログラムに渡す引数。
  • Working directory: $FileDir$
    • 作業ディレクトリ。空白の場合、対象ファイルと同じフォルダとなります。
  • Environment variable:
    • 環境変数。プログラムの動作に必要な変数を設定します。
  • Output paths: $ProjectFileDir$/html/$FileNameWithoutExtension$.html
    • 実行結果の出力先。
  • Create output file from stdout:
    • オンにすると標準出力をOutput pathsで設定したファイルに書き込みます。

※パスはInset macroをクリックすると、簡単に入力できます。

以上で、設定は完了です。設定したFile typeに含まれる拡張子のファイルが更新されると実行されます。

File Typesの設定

PHPStormに登録されていないFile type(拡張子)であれば、File Typesに追加する必要があります。

IDE Settings > File Types

.markdownと区別するために.kramdownという拡張子にしているので、File Typesに.kramdownを新たに追加すればいいのですが、kramdownに対応したシンタックスハイライト・プラグインがないので、 Markdownプラグインのインストール時に追加されたMarkdown filesに拡張子を追加します。kramdown独自の拡張部分はハイライトされませんが、ベースとなるMarkdown部分はハイライトされます。

Markdown filesを選択して、拡張子が表示されている左下の+(追加アイコン)をクリックして追加します。

おわりに

PHPStormは便利だなと思う反面、多機能で使いこなせるか心配ですが、Webマニュアルがしっかりしているので、あまり困ることはなさそうです。今回のように、kramdownだけでなく、CompassやAppleScriptなど、簡単に設定できるので便利ですね。

kramdownのことをCompilerと書いていますが、このようなツールは、Converter、Parser、Transpiler、・・・何と呼ぶのが正しいのでしょうか?公式サイトを見るとLibraryとかModuleとかなってますが、これは意味が違いますね。検索してみると、

markdown compiler: 521,000件
markdown converter: 324,000件
markdown parser: 207,000件
markdown transpiler: 1,310件

やっぱり、Compilerなのかな。