js-primer icon indicating copy to clipboard operation
js-primer copied to clipboard

utils.parseArgsの利用法を追記

Open yusuke-omae opened this issue 2 years ago • 6 comments

該当ページ

  • [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

Ref https://github.com/asciidwango/js-primer/issues/1698#issuecomment-1935345984

yusuke-omae avatar Nov 05 '23 09:11 yusuke-omae

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

azu avatar Dec 10 '23 11:12 azu

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に移して、それぞれのボリュームが大きく崩れないかはちょっと気になる。 (段々とボリュームが増えていくぐらいの構造が読みやすいはず)

azu avatar Feb 08 '24 05:02 azu

この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

azu avatar Feb 09 '24 05:02 azu

  • https://github.com/asciidwango/js-primer/issues/1719 にやる流れをまとめた

azu avatar Mar 20 '24 08:03 azu

ありがとうございます!

lacolaco avatar Mar 20 '24 14:03 lacolaco

@yossydev さん と @jp-knj さんに担当してもらう

azu avatar Mar 23 '24 00:03 azu