thank-you-starsで利用しているnpmパッケージに気軽にスターを送る
先週、こういうツイートを見て、
OSSを使っているなら、GitHubのリポジトリにそっとスターをつけると開発者のキャリアにわりと直接的に貢献できるのでお薦めです。少額の寄付より効果があるかも
— Taro L. Saito (@taroleo) 2017年8月15日
共感したのでサクッと作った。
package.jsonと同じディレクトリで実行するだけで、depsとdevDepsのパッケージのGitHubリポジトリにスターできる。 事前にパーソナルトークンをホームディレクトリに保存しておく必要があるけど、その辺はREADMEを読んでくれ。
依存に入れて使っているということは、それなりに恩恵を受けているということなので、問答無用でスターを送ってしまって良いと思う。 孫依存のパッケージにも送るか迷ったけど、npm的にそこ含めると一気に数が膨れてしまうのでやめた。
これでみんなももりもりスターを送ろう!
package.jsonに関する知見
これだけの単純なパッケージながら多少の知見が得られたので共有。
package.jsonの正規化はnormalize-package-data
package.jsonのrepositoryプロパティは、正規形は
{type: "git", url: "git@github.com:facebook/react.git"}
のようなオブジェクト型だけど、文字列型でfacebook/react
などの特殊形も認められていて扱いがめんど臭い。
npmの中で使っているパッケージを調べたらこれだったので同じものを使った。
これによって、typeとurlのあるオブジェクト型に統一される。他のプロパティも一通り正規化できるし、オプションによってバリデートも可能なので、package.jsonを扱うときに必要なら使うと良い。
Git repositoryの情報抽出はhosted-git-info
repositoryプロパティがオブジェクト型に統一されても、gitのURLにはssh, git, httpsというプロトコルの種類だけでなく、npmが認めているGitHub, Gist, BitBucket, GitLabなどの特殊な省略形式があって、これまた扱いが面倒。npmの内部ではこれを使っている。
これによって、URLをパースしてサービス、ドメイン、ユーザー、プロジェクトを抽出するだけでなく、各種プロトコル用のURLやinfo.bugs()
でGitHub IssuesのURLを生成できたりして、非常に便利。package.json以外の用途でもGitHubいじるときに使えそう。