Autoprefixerのブラウザ指定をpackage.jsonの`browserlist`からする
さっきAutoprefixerの設定でいろいろ阿呆なことをして、まあそれは解決して、ついでにリリースノートを見ていたら6.6.0でこんな機能が入っていたのを知る。
With Autoprefixer 6.6 you can specify browsers in
package.json
to reduce config files:{ "private": true, "devDependencies": { "autoprefixer": "^6.6.0", "postcss": "^5.2.6" }, "browserslist": [ "last 2 versions", "ie 9" ] }
Note that we highly recommend specifying browsers in
browserslist
config or inpackage.json
instead of Autoprefixer option.
これまでAutoprefixerのコードに書いてた対応させたいブラウザの範囲をpackage.jsonのbrowserslist
に書けるようになったとのこと。Browserslistはcaniuseのデータをダンプしたやつを文字列でクエリできるやつで、いつからかAutoprefixerが使っていたのは知っていたけど、いろいろ使いやすくなってたんだね。不勉強であった。うあー
6.6.0時点でAutoprefixer以外にも、Stylelintやbabel-env-presetでも使われているとのこと。Autoprefixerは設定はコードじゃなくてpackage.jsonとかのがおすすめと書いてるので、今後はこう書いたほうがいいのかな。
書いてみる
手元のpackage.jsonとgulpfileをいじってみた。
"private": true, ... "browserslist": [ "last 1 version" ], ...
こんな感じで書いて、gulpfileでAutoprefixerをかましてるコード
.pipe(postcss([ autoprefixer({ browsers: ['last 1 version'], cascade: false }), ...
ここからbrowsers: ['last 1 version'],
を削るだけ。
さて実行…うごいた…多分。エラーが出てもしかしてデフォルトにフォールバックされてるかもしれないけど、たぶん動いてる。わーい。
もうちょい読むと、package.jsonだけじゃなくて、$BROWSERSLIST
っていう環境変数でもいいし、ルートに設定を書いたbrowserslist
ファイルでもいいらしい。READMEのQueriesなるセクションに優先順位とかが書いてあった。
Google Analyticsのデータを使う
これはBrowserlistというかcaniuseの機能なんだけど、caniuse.comのSettingsからGoogle Analyticsのアカウントを連携させてやると、グローバルなブラウザのシェアでなく、管理下のサイトのそれに連動した情報を出してくれる。
そのデータをなかなかなワンライナーでファイルとして出力してやると、そいつをもとにしてくれるとのこと。ファイル出力はもうすこしスマートにできるといいな。