DefinitelyTyped(@types)の型定義を削除するPRを出すとき
#DefinitelyTyped #GitHub #Qiita投稿
Qiita投稿:
(ほぼ同じ投稿だが、ここのほうが経緯がより詳細ないので、経緯だけは残したほうがいい部分。削除テンプレートに関してもQiitaでは触れてない。テンプレートはPR出す人が読んだほうがいいものなはずなので。)
(これはまとまったら、Qiitaに投稿するはず(これは多くの人が知ったほうがハッピーなはず))
(PRがマージされてないので、内容は完璧に正しいことを保証してない。とりあえずどういう流れだったかを書く)
PR:
経緯
get-portに4.2.0()で公式で型定義が用意された。それに伴って削除する。
もともと、上記のPRはget-portを使うのに、importとrequireが2つとも必要ということになっていたので、importだけを使えばいいように変更するはずだった。たまたまget-portのリリースから公式で型定義が提供されていることを知った。そこで、それを上記のPRのコメントで伝えたら、「レビュアーの人たちが削除して」との返事をもらった。
squashしていいか聞いたところ、僕次第とのことだったので、タイトルを変更して、コミットをまとめたりした。
(少し経緯がごちゃっとしてるので、実例としてどうかとも思うけど、ないよりましだと思うので書きたい)
削除方法が書いてあるリンクをもらったので、それを頼りに削除して、それをコミットした。そのリンクの説明に具体例がなかったので、それを書くことがこのページの目的。
型定義の削除方法
実際に打ったコマンドが以下。
$ npm run not-needed -- get-port 4.2.0 https://github.com/sindresorhus/get-port
まず
get-portの部分はDefinitelyTyped/types/get-portだから、get-portになるはず。
4.2.0はsindresorhus/get-portでのバージョンで、@types/get-portで公開されているものより高いバージョンを指定する必要があるとREADME.mdは言っている
https://github.com/sindresorhus/get-portは型定義があるリポジトリのURL
その次にも引数を指定できて、DefinitelyTypedを置き換える型定義のnpmパッケージの名前を書くぽい
大体の場合、最初の引数(今回の場合get-port)と同じだから、省略できる
TravisCI上で、CIが通ったURL:
(うまく行かないときに、実行結果を比較すると参考になるかも)
削除コミット:
最初、勘違いしたところ
「4.2.0のバージョンは@types/get-portより高いバージョンを指定してね」と書いてあるだけだったので、現在の@types/get-portが4.0.1なので、4.0.2にした。ただこれは間違い。
CIでエラーする。:
エラーを見ると「The specified version 4.0.2 of get-port is not on npm.」となっていて、「4.0.2は存在してないnpmパッケージだよ」といっている。
ということで、get-portのバージョンでとして存在している必要がある。そのため、get-port公式で で型定義が対応した4.2.0を指定して無事にCIが通った。
PRの削除テンプレートの欄
削除するときは、以下の項目PRのテンプレートのチェックするけど、下2つの項目はコマンドが削除してくれてるから、チェック可能。最初のチェック項目はどういうときにチェックするかちょっと分からない。ただ、そういうときはチェックしなくてもメンテなの人から特に言われないから、気にしなくていいと思う。
code:md
If removing a declaration:
- If a package was never on DefinitelyTyped, you don't need to do anything. (If you wrote a package and provided types, you don't need to register it with us.)
- Delete the package's directory.
- Add it to notNeededPackages.json.