Textlintを実行できない
現在、Hookのindex.mdを翻訳している者です。
翻訳が完了したのでtextlintで表記のチェックを行おうと考えたのですが、textlintを実行できないためコミットできずにいます。
状況は以下のとおりです。
エラーの指示通りyarn installで依存関係をインストールすると、ロックファイルも書き換えてしまいます。
環境変数を設定することでこのエラーを回避可能ですが、別のパースエラーが発生します。
環境
- Node
v12.22.12とyarnv3.6,1 - Node
v18.16.1とyarn4.0.0-rc.48
の2つの環境で調査しましたが結果は変わりませんでした。
最初に #580 が main にマージされてからこの辺りの仕組みは何も変えていないのですが、#580 にあるとおり、仕組み的にやや特殊なことをしています。こちらは Yarn 1.x 系を使っているのでおそらくそのあたりが影響している可能性が高そうです。
Yarn 1.x の準備が難しい場合、textlint というディレクトリがあるので、そちらに cd で移動してから yarn, yarn textlint とやっていただくと、流石に動くのではと思っているのですが如何でしょうか。(2.x 以降は使ったことがないので間違っていたら申し訳ありません)
ありがとうございます。動きました。
Yarnのバージョンを上げていない理由はなにかあるのでしょうか?
@Hayao0819 単に私が普段 NPM を使っており、Yarn については「動いてればいいや、2 でなんかすごい変更があったらしい」程度の知識しかないからです…。新しいバージョンでも動く方法をご存じであれば PR を作ってくださると助かります。
@Hayao0819 @smikitky はじめまして。質問の内容ですが、おそらくYarn1系を使用する理由としては、以下のような理由があるのではないかと考えております。(あくまで個人の調査結果です。)
依存関係など、専門的な知見はないため、そこらへんはご了承くだいさい。
【考えられる理由】 1系: node_modulesディレクトリにパッケージをインストールします。これはnpmと同じ一般的な方式。
2系以降: デフォルトで Plug'n'Play (PnP) という仕組みが採用されます。これはnode_modulesディレクトリを作成せず、.pnp.cjs(または.pnp.js)という単一のファイルで依存関係を解決する。
影響: ツール(IDE、リンター、TypeScript、テストフレームワークなど)がnode_modulesの存在を前提としている場合、それらのツールが正しく動作しなくなる可能性があります。多くのツールはPnPに対応するための設定変更や、プラグインの導入が必要になります。既存のCI/CDパイプラインも大幅な調整が必要になる。