Movable TypeでSass等を処理するプラグイン(その2)

Movable TypeでSass等を処理するプラグイン(Preprocessor)の、細かな動作や設定について解説します。

1.コマンドラインオプションの指定

プリプロセッサのコマンドラインオプションを指定することもできます。
それには、config.yamlファイルの対象のプリプロセッサの部分で、「command:」の行を書き換えます。

たとえば、lessでは、「--yui-compress」のオプションを指定すると、コンパイル後のCSSをYUI Compressorで圧縮することができます。
この機能を使いたい場合、PreprocessorCSSディレクトリのconfig.yamlファイルで、lessの「command:」の行を以下のように書き換えます。

command: /usr/local/bin/lessc --yui-compress --no-color {{src}} {{dst}}

2.プリプロセッサ用ファイルを削除しない

再構築で出力したファイル(=プリプロセッサ用のファイル)は、通常はサーバーに残す必要はないので、自動的に削除します。
しかし、場合によっては再構築で出力したファイルも、サーバーに残しておきたいことがあるかもしれません。

常に自動削除を止めたい場合は、以下の手順を取ります。

  • システムの管理画面で「ツール」→「プラグイン」メニューを選び、プラグイン一覧のページを開きます。
  • Preprocessorプラグインの設定を開き、「再構築されたプリプロセッサ用のファイルを削除する」のチェックをオフにします。

また、特定のファイル(テンプレート)だけ、自動削除を止めることもできます。
その場合、対象のテンプレートの先頭の行に、「*NO_DELETE*」というキーワードを含むコメントを入れます。

3.プリプロセッサの処理対象から外す

プリプロセッサで処理するかどうかは、テンプレートの出力ファイルの拡張子で決まります。
ただ、場合によっては、特定のテンプレートだけプリプロセッサの対象外にしたいこともあるかもしれません。
そのときは、対象のテンプレートの先頭の行に、「*NO_COMPILE*」というキーワードを含むコメントを入れます。

4.任意のプリプロセッサ等を追加する

現状ではSass/less/Stylus/CoffeeScript/TypeScriptに対応していますが、それ以外の任意のプリプロセッサ等を追加することもできます。

まず、プロプロセッサ追加用のファイルをダウンロードします。
そのファイルを解凍すると、「plugins」というフォルダができ、その中の「PreprocessorMine」フォルダに「config.yaml」というファイルができます。
このconfig.yamlファイルを書き換えて、プリプロセッサ等の起動方法等を定義します。

config.yamlファイルの中に、「preprocessors:」という行があります。
この行の後に、以下のような記法で、プリプロセッサ起動方法等の定義を書きます。

preprocessors:
  キー:
    in_ext: 入力拡張子
    out_ext: 出力拡張子
    redirect: リダイレクトフラグ
    command: コマンドライン
  キー:
    in_ext: 入力拡張子
    out_ext: 出力拡張子
    redirect: リダイレクトフラグ
    command: コマンドライン
  ...

各行の意味は以下の通りです。

4-1.キー

個々のプリプロセッサ等を識別するキーワードを、半角英数字で指定します。
他のプリプロセッサ等と重複しないキーワードにします。

4-2.入力拡張子

プリプロセッサ等の対象にするファイルの拡張子を指定します。ただし、「.」は付けません。
複数の拡張子を対象にしたい場合は、それぞれの拡張子をコンマで区切って並べます。

4-3.出力拡張子

プリプロセッサ等の出力ファイルの拡張子を指定します(「.」は付けません)。

4-4.リダイレクトフラグ

プリプロセッサ等によっては、実行結果をファイルに出力する機能がなく、標準出力に出力することしかできない場合があります(例:コマンドライン版のPHP)。
この場合は、「redirect: 1」の行を入れることで、標準出力をファイルにリダイレクトすることができます。

なお、リダイレクトが不要な場合は、「redirect:」の行も不要です。

4-5.コマンドライン

プリプロセッサ等を実行するためのコマンドを記述します。
入力ファイル名/出力ファイル名は、それぞれ「{{src}}」と「{{dst}}」で表すことができます。
「{{src}}」は、再構築によって出力されたファイルの名前を表します。
また、「{{dst}}」は、「{{src}}」のファイル名の拡張子を、4-3.の出力拡張子に変えた名前を表します。

なお、出力をファイルにリダイレクトする場合(4-4.の機能を使う場合)は、コマンドラインにはリダイレクトの部分は書きません。
リダイレクトは内部で自動的に行います。
また、リダイレクト先のファイル名は、「{{dst}}」のファイル名になります。

たとえば、「/usr/bin/foo」で入力ファイルを処理し、その出力をファイルにリダイレクトするなら、「redirect: 1」の行を指定し、かつ「command:」の行は以下のように書きます。

command: /usr/bin/foo {{src}}

4-6.書き方の例

たとえば、再構築で出力された「○○○.haml」ファイルを、「/usr/bin/haml」で処理し、「○○○.html」というファイルを出力するようにしたいとします。
この場合、config.yamlファイルの「preprocessors:」以降を以下のように書きます。

preprocessors:
  haml:
    in_ext: haml
    out_ext: html
    command: /usr/bin/haml {{src}} {{dst}}

なお、PreprocessorMineのconfig.yamlには、書き方のサンプルとして、上記の部分をコメントアウトした(行の先頭を「#」にした)状態で入れてあります。