Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(nodecli): commanderパッケージ を node:utilparseArg に変更 #1757

Merged
merged 28 commits into from
Aug 3, 2024

Conversation

azu
Copy link
Collaborator

@azu azu commented Jul 21, 2024

サマリ

  • commanderパッケージは使わずに、node:utilparseArg関数を使うように変更した
  • npm installを初めて使うのがmarkedパッケージに変わったため、整合性のためpackage.jsonの説明とnpm installの説明を分離して移動した

変更内容

Preview

Diffで見るのは結構厳しい量なので、Previewで見ておかしいところを治すがよさそう

cc @yossydev @jp-knj

fix #1698

@bot-user
Copy link

bot-user commented Jul 21, 2024

Deploy Preview for js-primer ready!

Name Link
🔨 Latest commit f6525b4
🔍 Latest deploy log https://app.netlify.com/sites/js-primer/deploys/66ade321b6ee570008ffe042
😎 Deploy Preview https://deploy-preview-1757--js-primer.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@azu azu changed the title fix(nodecli): commander を node:util parseArgsに変更 fix(nodecli): commanderパッケージ を node:utilparseArgs に変更 Jul 21, 2024
@azu azu changed the title fix(nodecli): commanderパッケージ を node:utilparseArgs に変更 fix(nodecli): commanderパッケージ を node:utilparseArg に変更 Jul 21, 2024
@azu azu marked this pull request as ready for review July 21, 2024 11:22
@azu azu requested a review from lacolaco July 21, 2024 11:22
Copy link
Collaborator Author

@azu azu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Node CLIの章全体を変えてる

Comment on lines +162 to +167
### [コラム] `node:` プリフィックス {#node-prefix}

Node.jsの標準モジュールは、`node:util`や`node:fs`のように`node:`というプリフィックスがモジュール名についています。
この`node:`プリフィックスは後から導入された仕組みであるため、`util`や`fs`のようにプリフィックスなしでもモジュールを読み込むことができます。

しかしながら、`node:`プリフィックスがあることでnpmからインストールしたサードパーティ製のモジュールとの区別が明確になるため、付けておくことが推奨されます。
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

デフォルトがnode:になってるので、あえて本文にいる必要がない気がするのでコラムに切り出した。

Comment on lines 50 to 72
## Node.jsプロジェクトのセットアップ {#setup-nodejs-project}

今回作成するNode.jsのCLIアプリケーションは、`main.js`ファイル以外にも複数のファイルが必要になります。
また、外部のnpmパッケージのインストールやテストスクリプトの実行なども行います。
そのため、Node.jsプロジェクトのセットアップとして`package.json`というファイルを作成します。

`package.json`とは、プロジェクトの情報、プロジェクトが依存するパッケージの種類やバージョンの情報、プロジェクトで実行するスクリプトなどを記録するJSON形式のファイルです。
`package.json`ファイルのひな形は、`npm init`コマンドで生成できます。
まだ`npm`コマンドの用意ができていなければ、先に「[アプリケーション開発の準備][]」の章を参照してください。

通常は対話式のプロンプトによって情報を設定しますが、ここではすべてデフォルト値で`package.json`を作成する`--yes`オプションを付与します。
`nodecli`のディレクトリ内で、`npm init --yes`コマンドを実行して`package.json`を作成しましょう。

```shell
$ npm init --yes
```

生成された`package.json`ファイルは次のようになっています。

[import, title:"package.json"](src/package.json)

現時点では`package.json`にはあまり情報が記述されていませんが、後ほどアプリケーションの情報や依存パッケージを追加する際に利用します。

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

package.jsonを作るところだけを最初に移動した。
type=moduleの設定のところで色々書くと大変なので、プロジェクトセットアップ的な話で置いてる。
ここでtype=module設定までやても良い気はするけど…

npm initにはいまだに type=module を設定する方法がなかった
npm/rfcs#347

Comment on lines -12 to +36
## markedパッケージを使う {#use-marked-package}
## `marked`パッケージをインストールする {#install-marked}

JavaScriptでMarkdownをHTMLへ変換するために、今回は[marked][]というライブラリを使用します。
markedのパッケージはnpmで配布されているので、commanderと同様に`npm install`コマンドでパッケージをインストールしましょう。
MarkdownをHTMLへ変換するために、今回は[marked][]というライブラリを使用します。
markedのパッケージは[npm][]で配布されているので、`npm install`コマンドを使ってインストールできます。
まだ、`package.json`を作成していない場合は、先に「[Node.jsプロジェクトのセットアップ][]」を参照してください。

それでは、`npm install`コマンドを使って`marked`パッケージをインストールします。
このコマンドの引数にはインストールするパッケージの名前とそのバージョンを`@`記号でつなげて指定できます。
バージョンを指定せずにインストールすれば、その時点での最新の安定版が自動的に選択されます。
次のコマンドを実行して、markedのバージョン4.0をインストールします。[^1]

```shell
$ npm install marked@4.0
```

インストールが完了すると、`package.json`ファイルは次のようになっています。

[import, title:"package.json"](src/package.json)

また、`npm install`をすると同時に`package-lock.json`ファイルが生成されています。
このファイルはnpmがインストールしたパッケージの、実際のバージョンを記録するためのものです。
先ほどmarkedのバージョンを`4.0`としましたが、実際にインストールされるのは`4.0.x`に一致する最新のバージョンです。
`package-lock.json`ファイルには実際にインストールされたバージョンが記録されています。
これによって、再び`npm install`を実行したときに、異なるバージョンがインストールされるのを防ぎます。

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここで npm installは初登場になる

@@ -11,7 +11,6 @@
"author": "",
"license": "ISC",
"dependencies": {
"commander": "^9.0.0",
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

commanderはアンインストール

Comment on lines +137 to +140
`parseArgs`関数は、コマンドライン引数をパースした結果として`values`と`positionals`の2つのプロパティを持つオブジェクトを返します。
`values`オブジェクトには、`--key=value`のようなオプションや`--flag`のようなフラグをパースした結果が保存されています。
`positionals`配列には、オプションやフラグ以外の引数が配列として順番に格納されています。
デフォルトでは、`positionals`配列はパース結果には含まれないため、`allowPositionals`オプションを`true`にすることで含まれるようになります。
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

positionals を説明する誰でもわかる日本語が思いつかなかったので、オプションやフラグ以外という表現にしてる。

@azu azu merged commit 2a0712b into v6-node-updates Aug 3, 2024
13 checks passed
@azu azu deleted the node-utils branch August 3, 2024 08:00
azu added a commit that referenced this pull request Aug 3, 2024
* mochaを`node:test`に変更する (#1737)

* fix(nodecli): ユニットテストのMochaをnode:testに変更

* fix(nodecli): Mochaのリンクを削除

* fix(nodecli): 修正箇所の言い回しを訂正

* fix(nodecli): Windowsで動作しないサンプルコードを削除

* fix(nodecli): refactor-and-unittestからMochaを削除

* fix(nodecli): commanderパッケージ を `node:util` の `parseArg` に変更 (#1757)

* fix(nodecli): commanderをコードから削除

* refactor: commanderのインストールを削除、セットアップセクションを追加

* fix: commanderをparseArgに置き換える

* fix

* fix

* fix: main-3.jsは利用しな苦なった

* fix

* fix

* fix

* fix order

* fix: node:fsに統一

* `node:`をコラムに移動

* fix

* fix

* fix

* fix

* fix

* remove empty line

* fix

* fix

* npm link

* link

* fix

* fix

* fix

* シンプルに

* 標準モジュールはインストールが不要なことを明記

* fix

---------

Co-authored-by: WhyK <windchimeyk@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants