Skip to content

Commit 59aa2de

Browse files
committed
fix(usecase/nodecli): コマンドライン引数のデフォルト値を ?? でセットする
1 parent 910ba9c commit 59aa2de

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

source/use-case/nodecli/md-to-html/README.md

+9-6
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,19 @@ console.log(options.gfm);
9898
### デフォルト設定を定義する {#declare-default}
9999

100100
アプリケーション側でデフォルト設定を持っておくことで、将来的にmarkedの挙動が変わったときにも影響を受けにくくなります。
101-
次のようにデフォルトのオプションを表現したオブジェクトに対して、`program.opts`メソッドの戻り値で上書きしましょう。
102-
オブジェクトのデフォルト値を別のオブジェクトで上書きするときには`...`(spread構文)を使うと便利です([オブジェクトのspread構文][]を参照)。
101+
次のようにオプションを表現した`cliOptions`オブジェクトを作成し、`program.opts`メソッドの戻り値から取得した値をセットします。
102+
コマンドライン引数で指定されなかったオプションには`??`[Nullish coalescing演算子][])を使ってデフォルトの値をセットします。
103+
Nullish coalescing演算子は左辺がnullishであるときにだけ右辺の値を返すため、値が指定されなかった状態と明示的に`false`が与えられた状態を区別したいときに便利です。
103104

104105
<!-- 差分コードなので -->
105106
<!-- doctest:disable -->
106107
```js
107-
// コマンドライン引数のオプションを取得し、デフォルトのオプションを上書きする
108+
// コマンドライン引数のオプションを取得する
109+
const options = program.opts();
110+
111+
// コマンドライン引数で指定されなかったオプションにデフォルト値を上書きする
108112
const cliOptions = {
109-
gfm: false,
110-
...program.opts(),
113+
gfm: options.gfm ?? false,
111114
};
112115
```
113116
@@ -154,4 +157,4 @@ $ node main.js --gfm sample.md
154157
[marked]: https://github.com/chjj/marked
155158
[変換オプション]: https://marked.js.org/#/USING_ADVANCED.md#options
156159
[GitHub Flavored Markdown]: https://github.github.com/gfm/
157-
[オブジェクトのspread構文]: ../../../basic/object/README.md#object-spread-syntax
160+
[Nullish coalescing演算子]: ../../../basic/operator/README.md#nullish-coalescing-operator

source/use-case/nodecli/md-to-html/src/main-3.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ program.option("--gfm", "GFMを有効にする");
77
program.parse(process.argv);
88
const filePath = program.args[0];
99

10-
// コマンドライン引数のオプションを取得し、デフォルトのオプションを上書きする
10+
// コマンドライン引数のオプションを取得する
11+
const options = program.opts();
12+
13+
// コマンドライン引数で指定されなかったオプションにデフォルト値を上書きする
1114
const cliOptions = {
12-
gfm: false,
13-
...program.opts(),
15+
gfm: options.gfm ?? false,
1416
};
1517

1618
fs.readFile(filePath, { encoding: "utf8" }, (err, file) => {

source/use-case/nodecli/md-to-html/src/main.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ program.option("--gfm", "GFMを有効にする");
77
program.parse(process.argv);
88
const filePath = program.args[0];
99

10-
// コマンドライン引数のオプションを取得し、デフォルトのオプションを上書きする
10+
// コマンドライン引数のオプションを取得する
11+
const options = program.opts();
12+
13+
// コマンドライン引数で指定されなかったオプションにデフォルト値を上書きする
1114
const cliOptions = {
12-
gfm: false,
13-
...program.opts(),
15+
gfm: options.gfm ?? false,
1416
};
1517

1618
fs.readFile(filePath, { encoding: "utf8" }, (err, file) => {

0 commit comments

Comments
 (0)