utils.parseArgsの利用法を追記
該当ページ
- [x] https://jsprimer.net/use-case/nodecli/argument-parse/
リクエスト/提案内容
当ページではnpmパッケージを利用するチュートリアルとしてcommanderパッケージを利用しています。
ただしnode.js v20.9.0(LTS)ではimport { parseArgs } from 'node:utils'を用いることでnpmパッケージ非依存で当該処理を解決できます。
https://nodejs.org/dist/latest-v20.x/docs/api/util.html#utilparseargsconfig
この関数に関して下記のいずれかの対応があった方がいいと思います。
- あえて無視していることを記述
- コラムとして現状のnode.jsには当該関数があることを明記
-
commanderパッケージから置き換える(npmパッケージ使用のチュートリアルを別ページに書く必要がでる)
以上検討していただけるでしょうか。
TODO
- [x] #1718 に依存している
- [ ]
mpm initの話をコマンドライン引数を処理する → ECMAScriptモジュールを使うの中に移動する - [ ] commanderパッケージをインストールするを削除
- [ ]
node:*やコアモジュールの説明を ファイルを読み込む → ECMAScriptモジュールを使うへ移動する - [ ]
commanderをutil.parseArgsに変更する- https://jsprimer.net/use-case/nodecli/md-to-html/ もparseArgsに変更
Ref https://github.com/asciidwango/js-primer/issues/1698#issuecomment-1935345984
https://github.com/asciidwango/js-primer/blob/50e3b7b86b75a48ea9d56f297ec21247914c2247/meetings/2022-08-18/README.md?plain=1#L46
まだ入れてなかったのは、以前はexperimentalでの実装だったからですね。
node:testも含めて、Node CLIの章を書き直すのが良いと思います。
一応外部モジュールを扱うユースケースではあるので、npm installが必要になるのがmarkedまで後ろにずれてしまうのが気になるところですかね。
- #1694
Node.jsでCLIアプリ · JavaScript Primer #jsprimerでcommanderを使わなくなった場合、markedの部分で初めてnpm installとpackage-lockが登場するようになるはず。 ただし、type=moduleを入れるので、npm initは必ず最初にいる
この場合に、節を入れ替えることも一応できるけど、流れ自体は別に変えなくても良さそう。
- util→fs→marked
- 流れは現状のまま
- fs→util→marked
- fsを先にくる
コマンドライン引数を処理する · JavaScript Primer #jsprimerからnpm install周りの話をMarkdownをHTMLに変換する · JavaScript Primer #jsprimerに移して、それぞれのボリュームが大きく崩れないかはちょっと気になる。 (段々とボリュームが増えていくぐらいの構造が読みやすいはず)
このissueのやることは二つに分けて進めるのがよさそう
commander をやめて、util.parsArgs
https://jsprimer.net/use-case/nodecli/argument-parse/ から
- mpm initとcommonjsの件をhttps://jsprimer.net/use-case/nodecli/helloworld/ に移動する
- プロジェクトのセットアップの話としてnpm initする
- commanderをparseArgsに変更する
- https://jsprimer.net/use-case/nodecli/md-to-html/ もparseArgsに変更
util.parsArgsの方が宣言的で分かりやすいので、これは問題ないはず。
セットアップ系を移動したりしないと辻褄が合わないので、分量のバランスがおかしくないかは、やってみて確認する必要がありそう。
mocha を node:test に変更する
https://jsprimer.net/use-case/nodecli/refactor-and-unittest/ をnode:testにする
懸念点としてはdevDependenciesの話がなくなってしまうこと。 正直ほぼ差がないので、気持ち次第という感じ。 Node.js 20からStableなので、Nodeのv20 LTSへのアップデートも一応必要。
--
とりあえずこの二つのフェーズに作業分けて進めるのがよさそう。
あとmarkedのアップデートもあるので3つissueに分けて進める。 Issueを切って来週のjsprimer weekの記事で募ってみる
cc @lacolaco
- https://github.com/asciidwango/js-primer/issues/1719 にやる流れをまとめた
ありがとうございます!
@yossydev さん と @jp-knj さんに担当してもらう