スポンサーリンク

SublimeText2 Automaticに設定した時のビルドファイルの優先順位

SublimeTextでCompassを使うために、下記のパッケージを追加しました。

  • Sass
  • SASS Build
  • SCSS
  • SCSS Snippets
  • Compass

これらのパッケージを追加し、Automaticでビルドしてみると、問題なくSCSSからCSSファイルが出力されましたが、SCSSファイルと同じフォルダに出力されました。config.rbで設定したフォルダとは異なるため、何か間違っていると思い調べてみました。

SCSSファイルのコンパイルに関係するsublime-buildファイル(以下、buildファイル)を探してみたところ、以下のものが見つかりました。

  • Compass
    • Compass.sublime-build
      • “selector”: “source.sass, source.scss”,
  • SASS Build
    • SASS – Compressed.sublime-build
      • “selector”: “source.sass, source.scss”,
    • SASS.sublime-build
      • “selector”: “source.sass, source.scss”,

ビルド実行時(Cmd+B)、Build SystemをAutomaticにした場合、作業中ファイルの種類(拡張子)と 各Packageのbuildファイルのselectorが一致したものが処理されます。

そこで、これらのbuildファイルを覗いてみると、SASS.sublime-buildが実行されていることが分かりました。さらに、一つの拡張子に対して複数のselectorが存在しても、何かしらの規則で探索され、一致する最初のbuildファイルのみ実行されるようです。

そんなこんなで、優先順位を調べるために、SASS BuildにCompass.sublime-buildを、UserにSASS.sublime-buildをコピーしてあれこれ試してみました。

てっきりbuildファイル名を昇順(ASC)で調べていき、selectorと対象のファイルが一致すると実行かと思いましたが、どうも降順(DESC)で探索しているようです。一つのPackageフォルダに複数のbuildファイルがある場合も同様に降順で探索しています。つまり、図の矢印の順番にselectorを確認しているようです。ここでも、Userフォルダ(Packages/User)が優先されます。てっきり管理ファイルでもあるのかと思いましたが、ありませんでした(おそらく)。

ですので、デフォルトのままで実行すると、降順で最初に一致するSASS.sublime-buildが実行されていたわけです。

優先順位は

  • ~/Library/Application Support/Sublime Text 2/Packages/User
    • buildファイル名を降順で探索し、selectorが一致したら実行。
  • ~/Library/Application Support/Sublime Text 2/Packages/
    • Packageフォルダ名を降順で探索。フォルダ内のbuildファイルのselectorが一致したら実行。
      • フォルダ内に複数のbuildファイルがある場合はファイル名の降順で探索。

・・・書いててわかりにくいです。

ざっくりと説明すると、メニューの下から順にselectorに一致するbuildファイルが実行されます。