メインコンテンツまでスキップ

モノレポ

モノレポ内の複数パッケージにまたがる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}\""
}
}