vivliostyle / themes

💅 Beautifully crafted CSS themes.
https://vivliostyle.github.io/themes/
Other
30 stars 10 forks source link

Prettierによる整形で原稿MDファイル内容が書き換えられてしまう問題 #119

Closed MurakamiShinyu closed 2 months ago

MurakamiShinyu commented 10 months ago

このリポジトリではpackage.jsonの次の設定によってcommit時にprettierによる整形が実行されるようになっている:

https://github.com/vivliostyle/themes/blob/da19c8d34aba3b8d8f13de2e2eb8b9e87068c18d/package.json#L34-L38

各テーマパッケージのexampleの原稿MDファイルに対してこれが適用されて次のように意図しない書き換えがされてしまうことがある:

このうち問題のうち最初の「和文文字と欧文文字との間にスペース(U+0020)が挿入される」については、prettierのバージョンを現在使われている v2 から最新の v3 に更新すると解決するはず。しかし、commit時のprettier実行のために使われているpretty-quickがprettier v3に対応していないという問題があり、prettierを最新にするためにはpretty-quickをほかのものに置き換える必要がある。そのpretty-quickのissue:

実際に問題が起きた例:

当面の対策としては、.prettierignore ファイルでMDファイルが整形対象にならないようにする。例: https://github.com/vivliostyle/themes/blob/da19c8d34aba3b8d8f13de2e2eb8b9e87068c18d/.prettierignore#L2

spring-raining commented 2 months ago

Prettier v3へのアップグレードは #131 で完了しました。これにより以下の問題が解決しました。

和文文字と欧文文字との間にスペース(U+0020)が挿入される

一方で、以下の問題のため packages/@vivliostyle/theme-epub3j/**/*.md は引き続きPrettierのフォーマットの対象外としています。

意図的に入れている段落の行頭の全角スペース(U+3000)が削除される

本来、行頭の全角スペースはCSSによる指定で再現が可能であるため、行頭の全角スペースを削除するPrettierによるフォーマットは妥当性があるように思います。そのため、theme-epub3jのMarkdownファイルを例外的にPrettierの対象外にする現在の対応が最良だと思います。