モノレポ
モノレポ内の複数パッケージにまたがるMarkuplintのセットアップ。
戦略
リポジトリルートに共通設定を置き、必要に応じてパッケージごとのオーバーライドを使います。Markuplintは各ターゲットファイルから上方向に自動検索するため、ルートの .markuplintrc がすべてのパッケージに適用されます。
設定
ルート設定(共通)
.markuplintrc
{
"extends": ["markuplint:recommended"],
"parser": {
"\\.[jt]sx$": "@markuplint/jsx-parser"
},
"specs": {
"\\.[jt]sx$": "@markuplint/react-spec"
}
}
パッケージごとのオーバーライド(任意)
異なるルールが必要なパッケージは、独自の .markuplintrc を持つことができます。Markuplintは最も近い設定ファイルを使うため、パッケージレベルの設定が完全に優先されます:
packages/legacy-app/.markuplintrc
{
"extends": ["markuplint:recommended"],
"rules": {
"class-naming": false,
"character-reference": false
}
}
備考
Markuplintは最も近い設定ファイルを見つけると検索を中止します。ESLintのカスケード動作とは異なります。パッケージレベルの設定がルートを継承する場合は extends で参照してください:
packages/legacy-app/.markuplintrc
{
"extends": ["../../.markuplintrc"],
"rules": {
"class-naming": false
}
}
CIでの実行
リポジトリルートに1つのリントスクリプトを追加します:
package.json
{
"scripts": {
"lint:html": "markuplint \"packages/*/src/**/*.{html,jsx,tsx,vue}\""
}
}