Repository navigation
Releases: 223n/node_japanese_lint_template
Release list
v3.0.0
ですます調の設定で、普通体の文末も拾うようにした版です。互換性のない変更を含みます。
何が変わったか
ですます調の設定(config/textlint-desumasu.js、style: 'ですます')に、規則 @223n/lint-config-ja/rules/desumasu-ending が既定で入ります(#22)。
これまでの文体の検査(no-mix-dearu-desumasu)は、「である」「だ」のような明示的な常体しか拾わず、表のセルも見ていませんでした。そのため、ですます調の文書に普通体の文末が混ざっても、検査を通っていました。
| 文 | 2.x | 3.0.0 |
|---|---|---|
これは例である。 |
指摘する | 指摘する |
動作を確かめる。 |
素通りする | 指摘する |
表のセルの 動作を確かめる。 |
素通りする | 指摘する |
新しい規則は、本文、箇条書き、表のセルの文末を形態素解析で見て、「です」「ます」の無い文末を報告します。名詞で終わるもの(体言止め)や、引用で終わるもの、文末の注記は、報告しないか外してから見ます。自動の修正(--fix)は付けていません。
利用側への影響
ですます調の設定を読むリポジトリでは、上げると指摘が増えます。 表の値として「行う」「行わない」を並べた書き方も報告されます。
すぐに直せないときは、desumasuEnding: false で外してから、少しずつ直してください。
// .textlintrc.js
const { createTextlintConfig } = require('@223n/lint-config-ja/config/textlint-base.js')
module.exports = createTextlintConfig({ style: 'ですます', desumasuEnding: false })書き換えられない語(表の値やラベル名など)は、規則のオプション allow に足すか、<!-- textlint-disable @223n/lint-config-ja/rules/desumasu-ending --> で止めます。詳しくは README の「普通体の文末も拾う」にあります。
である調の設定(既定)は変わりません。
依存
kuromojin と textlint-util-to-string を依存に明示しました。どちらも既に推移的に入っていた版で、入るパッケージの数は変わりません。
v2.1.1
CodeQL の指摘に対応した修正の版です。
利用側への影響
動きは変わりません。 上げ直す必要はありません。
直したのは、lint-vocabulary が exclude の glob を正規表現に直すところです。記号をエスケープする置き換えに g が付いておらず、CodeQL が「最初の1つしか置き換えていない」(js/incomplete-sanitization、high)と指摘しました。
実際には、そこへ渡る文字は常に1文字なので、置き換えが1回でも足りていました。読み手に誤解を与える書き方を直し、なぜ1文字で足りるのかをコメントに残しています。
エスケープが効いていること自体は、exclude: ["a.b.ts"] のときに a.b.ts が除かれ aXb.ts は拾われることで確かめました。
配布物に入らない変更
この版から、リポジトリ側の守りを整えています。いずれも npm の配布物には入りません。
| 変更 | |
|---|---|
| CodeQL での走査 | javascript-typescript と actions、週1回 |
| Dependabot | 本体は毎週、見本とワークフローは毎月 |
SECURITY.md |
弱点の知らせ方と、扱う範囲 |
| 検査の起動条件 | main と develop の両方で走るように |
| 配布物の検査 | npm の出力形式の変化と、辞書の欠落を捕まえるように |
| 見本の依存 | markdownlint-cli2 を上げ、GHSA-7w5x-hrqm-74c2 を外した |
あわせて、リポジトリのデフォルトブランチを main から develop に変えました。
v2.1.0
VS Code 拡張「テキスト校正くん」(ics.japanese-proofreading)の校正ルールを取り込みました(#8)。
利用側に新しい警告が出ます
指摘はすべて warning です。終了コードは変わらないため、CI は落ちません。
追加したのは、語の対応表で表記ゆれと誤用を拾う7種の辞書と、康煕部首の規則です。
| 辞書 | 拾うもの |
|---|---|
| 誤字 | アボガド → アボカド |
| 重言 | 馬から落馬 → 落馬 |
| ひらく漢字 | 出来る → できる |
| 冗長な表現 | することができます → できます |
| 外来語カタカナ表記 | プリンタ → プリンター |
| 固有名詞 | 東京ビックサイト → 東京ビッグサイト |
| 技術用語 | Github → GitHub |
康煕部首は、見た目が同じでも別の文字である漢字(⽤ と 用)を拾います。検索に掛からない、環境によって化けるといった実害があるためです。
止め方と絞り方
// .textlintrc.js
const { createTextlintConfig } = require('@223n/lint-config-ja/config/textlint-base.js')
// 丸ごと切る
module.exports = createTextlintConfig({ proofreading: false })
// 辞書を選ぶ
module.exports = createTextlintConfig({ proofreadingDictionaries: ['誤字', '技術用語'] })
// 警告ではなく検査を止める扱いにする
module.exports = createTextlintConfig({ proofreadingSeverity: 'error' })文書の一部だけ止めるときは、その範囲を <!-- textlint-disable prh --> と <!-- textlint-enable prh --> で囲みます。
取り込まなかったもの
テキスト校正くんの32規則のうち、次の2つは入れていません。
| 規則 | 理由 |
|---|---|
| かっこ類と隣接する文字の間のスペースの有無 | --fix が箇条書きの字下げを削り、構造を壊すためです |
| ハイフン(-) | A-B-C のようなキーや識別子の書式に使うためです |
残る30規則のうち25は、2.0.0 の時点ですでに有効でした。実際に足りなかったのは辞書7種と康煕部首です。
辞書について
辞書は dict/ に同梱しています。取得元は ics-creative/textlint-rule-preset-icsmedia(MIT)です。npm に公開されていないため、配布物の依存に git 参照を混ぜずに済む形を選びました。出典と更新のしかたは dict/README.md にあります。
辞書は文脈を見ないため、誤検出もあります(「そのとおりで」を「道理で」に直そうとするなど)。また textlint --fix は辞書の指摘も直すので、誤用を例として載せている箇所は、書いた時点で textlint-disable で囲んでおくのが安全です。
そのほか
.claude/**を検査対象から外しました(#9)。配布物には影響しません
v2.0.0
textlint-rule-preset-ja-spacing の規則を、v3 の既定のまま効かせるようにしました(#5)。
利用側の検査が落ちうる変更です
1.1.0 まで切っていた次の2つが有効になります。どちらも error です。
| 規則 | 1.1.0 | 2.0.0 |
|---|---|---|
ja-space-around-code(コードスパンの前後) |
切る | 有効 |
ja-space-around-link(リンクの前後) |
切る | 有効 |
規則は `markdownlint-cli2` が読む。 ← 2.0.0 では指摘される
規則は`markdownlint-cli2`が読む。 ← 通る
詳しくは [README](README.md) を見る。 ← 2.0.0 では指摘される
見るのは、日本語の文字と接する側だけです。`i` `m` `s` `u` のように、コードスパンどうしを空白で区切って並べるのは通ります。表の中でも指摘されます。
どれも textlint --fix で直せます。
変わらないもの
ja-no-space-around-slash(スラッシュの前後)は、1.1.0 と同じく有効です。前後の文字を問わずスペースがあれば指摘し、表の中は見ません- 強調と斜体の前後は、v3.0.3 の既定どおり見ません
ja-no-space-around-parentheses(かっこの前後)は、箇条書きの字下げを--fixが壊すため、引き続き切っていますhalfWidthSpacingの意味は変わりません。ただし'always'にしても、コードスパン・リンク・スラッシュの前後は「入れない」を求めます
前の挙動に戻すには
README「規則を個別に上書きする」の手順で切れます。
// .textlintrc.js
const { createTextlintConfig } = require('@223n/lint-config-ja/config/textlint-base.js')
const config = createTextlintConfig()
config.rules['preset-ja-spacing']['ja-space-around-code'] = false
config.rules['preset-ja-spacing']['ja-space-around-link'] = false
module.exports = config上げ方
npm install --save-dev @223n/lint-config-ja@^2.0.0^1.0.0 のように 1.x を指定している利用側には、自動では入りません。
確認した範囲
npm run check: 文書の指摘・警告とも0件、語彙検査35件通過、利用見本も通過bash test/install.sh: 28件通過(うち6件が新規)- 公開の前に、実際の tarball を入れた利用側で、規則が読み込まれることと上の挙動を確かめました
Full Changelog: v1.1.0...v2.0.0
v1.1.0
textlint-rule-preset-ja-spacing を 2.4.3 から 3.0.3 へ更新しました。
既存の規則の挙動は変わりません
v3.0.0 の破壊的変更で ja-space-around-code と ja-space-around-link の既定が有効になりましたが、明示的に無効化して v2 と同じ挙動を保っています。
この設定の ja-space-between-half-and-full-width の但し書きは「半角の語をコードスパンに入れれば前後のスペースは通る」としており、これらの規則が無効であることを前提にしています。有効にすると、この配布物が案内している書き方そのものが違反になります(実際にこのリポジトリの docs で19件出ました)。
ja-space-around-strong は v3.0.0 で追加され v3.0.3 で既定が無効に戻された経緯があり、既定に揺れがあるため同様に固定しています。
増える指摘
ja-no-space-around-slash(v3.0.2 で追加、既定で有効)の1つだけです。スラッシュ前後のスペースを禁じます。
上記の但し書きとは競合しないため有効のままにしました。不要であれば config/textlint-base.js の spacing に次を足してください。
'ja-no-space-around-slash': false,確認した範囲
npm run lint: 0件npm run example: markdownlint・textlint・語彙検査すべて通過- preset v3.0.3 の既定値を
rulesConfigから読み出して確認
Full Changelog: v1.0.1...v1.1.0