ちなみに写真は私ではないです。
このブログのソースコードはフロントに弱い人間(ちなみに私のこと)が書いてます。結果、jsの文末にセミコロンがついてたりついてなかったりしてしまってて。scssも同様です。残念。
そこで、prettier-eslintとprettier-stylelintを導入した。
しかし、フォーマット時にprettier-stylelintがエラーが出す。バージョンは0.4.2
。
Error: Couldn't resolve parser "postcss"
こんなエラーメッセージ。
原因
原因は、依存しているパーサーの名前がpostcss
からcss
に変わったためらしい。このエラーは、prettierのバージョンが2.0.4から起きているみたい。
解消方法
prettierのgithub issueに有志が挙げてくれている。感謝。
prettier-stylelint
は3年ほどノーメンテ状態。
今後のメンテも絶望的なのでパッチを当てて対応しましょうとのこと。
- プロジェクトのルートディレクトリに
patches
ディレクトリを作る。 - 作ったディレクトリの中に下記ファイルを作る。(ファイル名は
prettier-stylelint+0.4.2.patch
です。+をわすれずに)
prettier-stylelint 0.4.2.patch
diff --git a/node_modules/prettier-stylelint/src/index.js b/node_modules/prettier-stylelint/src/index.js
index 124c00d..a6f12ec 100644
--- a/node_modules/prettier-stylelint/src/index.js
+++ b/node_modules/prettier-stylelint/src/index.js
@@ -60,7 +60,7 @@ resolveConfig.resolve = (stylelintConfig, prettierOptions = {}) => {
prettierOptions.tabWidth = indentation;
}
}
- prettierOptions.parser = 'postcss';
+ prettierOptions.parser = 'css';
debug('prettier %O', prettierOptions);
debug('linter %O', stylelintConfig);
yarn add -D patch-package postinstall-postinstall
を実行yarn run patch-package
を実行(これでパッチが当たる)yarn install
時に自動でパッチが当たるようpackage.json
のscripts
に下記を追記
package.jsonの抜粋
"scripts": {
...
"postinstall": "patch-package"
}
patch-package
というライブラリはいい感じにパッチを作ってくれる。
yarn
で使うときはpostinstall-postinstall
を入れると良いよ、とgithub
のリポジトリに記載があったので入れた。どうやらyarn remove
のときもうまく対処してくれるとのこと。
困っている方の参考になれば嬉しいです。
わからなけらばtwitterで叫んでもらえれば反応できるかも。
参考リンク
Couldn't resolve parser "postcss" when updated to v2.0.4
patch-package