みずまずぷろぐらみんぐ日記

日々学んだことや頭に浮かんだことを、そこはかとなく書き連ねます

yarnコマンド

こんにちは、前回の投稿の翌日ちゃんと最後のC問題をACしたみずまずです。

ABSも修了したので、これからは本格的に過去問をこなしてコンテストに参加し、レートを上げていくことになります。

早く茶色になりたいな(灰色は色が薄くて嬉しくないので)。

周りに少しでも近づきたい。

と言いつつ、今日の本題は競プロではありません。

yarn run

です。

私は普段N予備校さんの【2020年度】プログラミング入門Webアプリ という講座と、AtCoderさんでプログラミングの学習を進めています。

そのN予備の入門講座で現在Node.jsを使いSlack上で動くBotを作っています。

Botのお仕事をモジュールとして実装すること自体は特に問題なくできたのですが、実装した機能をテストするところである疑問が…。



教材「コンソールでyarn testを実行します。」



みずまず「yarn testね、どれどれ。」



み「やったね!テスト成功!」



み「………………。」



み「いや、yarn testってなんだよ。」



yarnってパッケージマネージャでは?yarn test?node testとかじゃなくて?

PCさんも普通に応えてくれちゃってるけどえ?どういうこと?


今までyarnはパッケージのインストールにしか使わなかったので、私の中でyarnと言えばyarn addだったのです。


最初にパッケージの設定ファイル(package.json)で

"scripts": {"test": "node test.js"},

と設定したことは覚えていました。

動作をテストするためのtest.jsというファイルを記述したことも覚えています。


しかしどうしてそのtestファイルがyarnコマンドで実行できるのかわからなかったのです。


これはまずyarnコマンドでどんなことができるかよく知らなかったこと、そして設定ファイルの"scripts"がどんな意味を持つのかわかっていなかったことが原因でした。


調べてみたところ…

・yarnにはaddとかremoveだけでなく他にいくつもコマンドがある。

・yarn run (スクリプト) で設定ファイルの"scripts"オブジェクトに定義したスクリプトを実行できる。

 (今回の場合yarn run test == yarn run node test.js みたいな感じ。node test.jsやってたんだ!感動!w)

・さらに が他のコマンド(add,remove等)とかぶっていなければ、runは省略できる。

 (testはもともと用意されているコマンドにないので省略してrunを問題なし)

・この機能は開発者が動作の確認とかを簡単にできて便利らしい。



こういうことでした。

runの存在すら知らないまま省略されたコマンドを見たため、何が何だか分からなくなっていました。

私が映像授業派ではなくテキスト教材派なのも関係あるかもしれませんが、はじめの頃に比べてテキストを進めていると疑問が浮かぶことが多くなってきたように思います。

フォーラム(N予備校に用意されている質問の場)で他の方の質問&回答を読んで解決することもありますが、自分で調べて解決したことで教材を使っているかいないか関係なく誰かも調べるかもしれない情報は、小さなことでも簡単なことでも、こうやってこれからどんどん発信していこうと思います。

よろしくお願いします。

あとがき

そうそう、今日は日曜日ですね。

昨日の東京海上日動プログラミングコンテスト2020には参加できませんでしたが、今夜のABC170には勿論参加します。

頑張ってきます💪

参考にしたサイト

classic.yarnpkg.com