Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Prettier 2.0
sosukesuzuki
February 05, 2020
Programming
2
1.3k
Prettier 2.0
https://ginzajs.connpass.com/event/162321/
の発表内容です
sosukesuzuki
February 05, 2020
Tweet
Share
More Decks by sosukesuzuki
See All by sosukesuzuki
JavaScript エコシステムを維持する OSS の努力と課題
sosukesuzuki
13
6.1k
Prettierに従わなくてもいい場合
sosukesuzuki
7
2.5k
Prettier の TypeScript 3.7 対応について
sosukesuzuki
0
240
Prettier のしくみ
sosukesuzuki
4
1.7k
Other Decks in Programming
See All in Programming
Android入門
hn410
0
310
From Java 11 to 17 and beyond
josepaumard
0
300
iOSアプリの技術選択2022
tattn
6
2.5k
Nix for Scala folks
kubukoz
0
130
プログラミングを勉強したいと言われたら
yuba_4
0
420
もしも、 上司に鬼退治を命じられたら~プロジェクト計画編~
higuuu
0
290
How useEvent would change our applications
koba04
1
1.7k
The future of trust stores in Python
sethmlarson
0
180
よりUXに近いSLI・SLOの運用による可用性の再設計
kazumanagano
3
710
デュアルトラックアジャイル× Agile Testingから 見えてきたQAのミライ
atamaplus
0
400
Quartoを使ってみませんか / quarto_get_started
s_uryu
1
290
Cloud-Conference-Day-Spring Cloud + Spring Webflux: como desenvolver seu primeiro microsserviço reativo em Java?
kamilahsantos
1
140
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
3
440
Navigating Team Friction
lara
175
11k
Automating Front-end Workflow
addyosmani
1351
200k
Clear Off the Table
cherdarchuk
79
280k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
890
Product Roadmaps are Hard
iamctodd
34
6.1k
Three Pipe Problems
jasonvnalue
89
8.6k
Building Adaptive Systems
keathley
25
1.1k
Embracing the Ebb and Flow
colly
73
3.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
49k
KATA
mclloyd
7
8.6k
Transcript
Prettier 2.0 ginza.js 2020/02/05
自己紹介 - 鈴木颯介(すずきそうすけ) - GitHub(@sosukesuzuki) - Twitter(@__sosukesuzuki) - Prettier -
筑波大学情報科学類
Prettier - JavaScript で書かれたコードフォーマッター - Node.js / ブラウザで動く - JS
/ TS / HTML / CSS / YAML / GraphQL などに 対応 - 現在 1.19.1(master) - 2.0 が開発中(next)
Prettier
注意 - 今日話す内容は、発表時点で next ブランチに実装されているものもしくはメンバー 内で合意がとれているもの - 今後の状況によっては変更される可能性がある
概要 - 全体的に変更は小さめ - デフォルトオプションの変更 - 影響の大きいフォーマットの変更 - Node 8
以下のサポート終了 - など
経緯 - 2018年頃から多くの破壊的変更を含む野心的な 2.0 が計画されていた - しかし実際にはいくつかの大きな変更を含む小さな 2.0 が開発されている
経緯 - 1.19 のときに、Node のバージョン周りで面倒だった - TypeScript 3.7 をサポートするためには、依存している @typescript-eslint/typescript-estree
の バージョンをあげる必要があったけど、 typescript-estree と Prettier でサポートしている Node の バージョンが違かった。
経緯 - 今まで Node 4 までサポートしていた - いくつかの構文は Babel を使って対応していたがトランスパイル後のサイズなどを
考えて使えなかった構文がある。 - 例えば class は使わずに function で書いていた。 - スプレッド構文も使えないので Object.assign がいっぱいある。
経緯 - 単純に EOL がきているバージョンをサポートし続けるのはきつい。
経緯 - 当初予定していた 2.0 の機能の多くを延期 - それらは 3.0 として将来的に実装される予定 -
Node 8 以下のドロップを最優先とした 2.0 の開発がはじまった! - https://github.com/prettier/prettier/issues/6888
Node 8 以下のドロップ - Node 8 以下(正確には10.13.0未満)のサポートを終了する
デフォルトオプションの変更 - trailingComma - endOfLine - arrowParens
デフォルトオプションの変更- trailingComma - trailincComma オプションには all・none・es5 の3つがある - all はつけられる箇所すべてに末尾カンマをつける
- none は全部つけない - es5 は ES5 でバリッドになるようにつける - 関数の引数リストの末尾カンマはつかない
デフォルトオプションの変更- trailingComma - https://github.com/prettier/prettier/pull/6963 - trailincComma オプションはデフォルトで es5 になる -
いままでは none だった - 基本的に末尾カンマがつく
デフォルトオプションの変更- endOfLine - https://github.com/prettier/prettier/pull/7435 - 改行コードを決める - endOfLine オプションがデフォルトで lf
になる - これまでは auto だった - (そのファイル内の他の改行コードに合わせ、もし混在している場合は、最初に使われている改行 コードで全部合わせる )
デフォルトオプションの変更- arrowParens - アロー関数の単一の引数にカッコをつけるかを決める - デフォルトで always になる - 今までは
avoid だった always(2.0からデフォルトになる) avoid(今のデフォルト) 引数にカッコをつける 引数にカッコをつけない
大きめのフォーマットの変更 - よく使われそうな構文のフォーマットが変わる
大きめのフォーマットの変更- 関数式の空白 - https://github.com/prettier/prettier/pull/3903 - Function Expression の function のあとに空白が入るようになる
- Function Declaration との統一のため Function Declaration Function Expression
大きめのフォーマットの変更- 関数式の空白 1.19.1 2.0
大きめのフォーマットの変更- 関数式の空白 - generator の * の扱いも少し変わるかもしれない - https://github.com/prettier/prettier/issues/7028 -
キーワードじゃなくて名前の方に * がつく - 現在議論中なので変更されるかも 1.19.1 2.0
リリース時期について - 2020年の2月2日を予定していたが、開発が間に合わず延期になっている - いまのところ未定だができるだけ早くリリースしたい
まとめ - デフォルトオプションの変更 - 影響の大きいフォーマットの変更 - Node 8 以下のサポート終了 -
その他細かな変更 - Babel のパーサーを使って TypeScript のフォーマットを行う `parser=babel-ts` - ファイルではなく、ESLint のようにディレクトリを指定できるようにする (WIP) - メソッドチェインのフォーマットの改善 - 多くのフォーマットのバグの修正 - リリース時期は未定だができるだけ早くやりたい