CSS のベンダープレフィックス(接頭語)を自動で最適化(追加・削除)してくれる Sublime Text のプラグイン「sublime-autoprefixer 」に関するメモ。
対象ブラウザやそのバージョンを指定することも可能。
適切なベンダープレフィックスを付けるのはとても面倒で大変だが、このプラグインを使用すると簡単に CSS に付与したベンダープレフィックスを自動的に最適化してくれる。
このプラグインは「caniuse.com」という HTML5 や CSS3 等の対応状況を調べられるデータベースを元に、必要な CSS のみにベンダープレフィックスを追加し、また不要なベンダープレフィックスがあれば削除する「Autoprefixer」というツールの Sublime Text 用のプラグイン。
但し、完璧ではないので出力された CSS を確認する必要はあるみたい。
以下は Sublime Text 3 がインストールされていることを前提。
関連ページ:「Sublime Text 3 のダウンロードと基本的な設定」
目次
Node.js がインストールされている必要がある。
「Ctrl + Shift + p」で「install」と入力し検索して「Package Control: Install Package」を選択して起動。
「autoprefixer」と入力してインストールしたいパッケージ「Autoprefixer」を検索してインストール。
インストールが終わったら、Sublime Text を再起動で完了。
最適化したい CSS ファイルを開き、「Ctrl + Shift + p」でコマンドパレットを呼び出し「Autoprefix CSS」を選択するだけ。
最適化前のCSS
.headerBG {
  background-color: #dddddd;
  *zoom: 1;
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFECECEC', endColorstr='#FFDDDDDD');
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ececec), color-stop(100%, #dddddd));
  background-image: -webkit-linear-gradient(#ececec 0%, #dddddd 100%);
  background-image: -moz-linear-gradient(#ececec 0%, #dddddd 100%);
  background-image: -o-linear-gradient(#ececec 0%, #dddddd 100%);
  background-image: linear-gradient(#ececec 0%, #dddddd 100%);
}
.line-bottom {
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
  -webkit-box-shadow: #dbdbdb 0 1px 0;
  -moz-box-shadow: #dbdbdb 0 1px 0;
  box-shadow: #dbdbdb 0 1px 0;
}
.rotateIn {
  -webkit-animation: rotateIn 1s 0.2s ease none;
  -moz-animation: rotateIn 1s 0.2s ease none;
  -ms-animation: rotateIn 1s 0.2s ease none;
  -o-animation: rotateIn 1s 0.2s ease none;
  animation: rotateIn 1s 0.2s ease none;
}
.test {
  display: flex;
}
最適化後のCSS
.headerBG {
  background-color: #dddddd;
  *zoom: 1;
  filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFECECEC', endColorstr='#FFDDDDDD');
  background-image: linear-gradient(#ececec 0%, #dddddd 100%);
}
.line-bottom {
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
  box-shadow: #dbdbdb 0 1px 0;
}
.rotateIn {
  -webkit-animation: rotateIn 1s 0.2s ease none;
  -ms-animation: rotateIn 1s 0.2s ease none;
  animation: rotateIn 1s 0.2s ease none;
}
.test {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}
必要な CSS のみにベンダープレフィックスが追加され、また不要なベンダープレフィックスは削除されている。
但し、上記の例はデフォルトの設定(最新のブラウザから2バージョン前までを対象)での結果で、対象とするブラウザやそのバージョンを指定することも可能。
CSS ファイルや HTML ファイルで、最適化したい部分を選択して、「Ctrl + Shift + p」でコマンドパレットを呼び出し「Autoprefix CSS」を選択するだけ。
デフォルトのオプションは以下で確認できる。
Preferences → Package Settings → Autoprefixer → Settings – Default
Autoprefixer.sublime-settings
{
  "browsers": ["last 2 versions"],
  "cascade": true,
  "remove": true
}
デフォルトで設定している対象ブラウザは、最新から2バージョン前までとなっているみたい。
“browsers”: 対象ブラウザ
“cascade”: 値をそろえるためのインデントを行うかどうか。(デフォルト:true)
Autoprefixer changes CSS indentation to create a nice visual cascade of prefixes if the CSS is uncompressed:
“remove”: 不要なプリフィックスを削除するかどうか。(デフォルト:true)
By default, Autoprefixer also removes outdated prefixes. You can disable this behavior by `remove: false` option. If you have no legacy code, this options will make Autoprefixer about 10% faster.
ユーザー設定(Preferences → Package Settings → Autoprefixer → Settings – User)に独自の設定が可能。
{
    "browsers": ["last 5 versions", "ie 8", "ie 7"]
}
上記の場合、それぞれのブラウザの最新から5バージョン前までと、IE7、IE8 を対象ブラウザとする。
指定できるブラウザの例
<参考>
browsers: https://github.com/postcss/autoprefixer#browsers
Browserslist:https://github.com/ai/browserslist
プロジェクトごとの設定をすれば、デフォルトやユーザー設定より優先される。
メニューの「Project」→「Edit Project」を選択して開いたプロジェクトのファイル(xxxx.sublime-project)に記述(プロジェクト自体が設定されている必要がある)。
プロジェクトの設定の「settings」に「Autoprefixer」オブジェクトを追加して設定する。
{
    "folders":
    [
       フォルダの設定(省略)
    ],
    "settings": {
        "Autoprefixer": {
            "browsers": ["last 3 version"]
        }
    }
}