3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DefinitelyTyped(@types)の型定義を削除するプルリクエストの出し方

Posted at

やりたいこと

TypeScriptで開発している方は、@types/oooになってるパッケージお世話になっていると思います。この記事では、DefinitelyTypedにある不要になった型定義を削除する方法に関して紹介します。
こういう話は、日本語とかだとあんまり説明ない気がするのと、公式のドキュメントよりは少し抽象的なので、具体的にどんなコマンドを打てばいいかを書くことがこの記事の一番の目的です。

型定義を削除する経緯

get-portというパッケージがあります。get-port@4.2.0で公式で型定義が用意さました。それに伴って@types/get-portを削除することになりました。

公式のREADME.mdのRemoving packageにどうやって削除したらよいか書いてあります。それを頼りに削除して、それをコミットしました。そのリンクの説明に具体例がなかったので、それを書くことがこの記事の目的です。

型定義の削除方法

以下のように、削除はコマンドを一つ打つだけの親切な設計になっています。ただ、具体的な例がなかったので、この記事ではそれを書きたいです。

npm run not-needed -- typingsPackageName asOfVersion sourceRepoURL [libraryName]

以下が、実際に打ったコマンドです。

npm run not-needed -- get-port 4.2.0 https://github.com/sindresorhus/get-port

実際のコミットです。
notNeededPackages.jsonget-portが加わり、DefinitelyTyped/types/get-portが削除されていることが分かります。
あとは、変更したものをforkしたリポジトリにpushして、プルリクエストを出せばOKです。

今回の@types/get-portの削除プルリクエスト: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34165
無事にマージされました :tada:

--以降の引数に関しての説明

  • get-portの部分はDefinitelyTyped/types/get-portだから、get-portになるはずです。
  • 4.2.0get-portでのバージョンです。
    • 公式のREADME.mdによると、@types/get-portで公開されているものより高いバージョンを指定する必要があるらしいです。
    • そしてこのバージョンはnpm上のget-portで公開されているバージョンでなければならないようです。
  • https://github.com/sindresorhus/get-portは型定義があるリポジトリのURL
  • その次にも引数を指定できて、DefinitelyTypedを置き換える型定義のnpmパッケージの名前を書くぽいです
    • 大体の場合、最初の引数(今回の場合get-port)と同じだから省略できます

TravisCI上で、CIが通ったURL: https://travis-ci.org/DefinitelyTyped/DefinitelyTyped/builds/510980452
(CIうまく通らないときに、実行結果を比較すると参考になるかも知れません)

最初、勘違いしたところ

4.2.0のバージョンは@types/get-portより高いバージョンを指定してね」と書いてあるだけだったので、現在の@types/get-port4.0.1なので、4.0.2にした。ただこの解釈は間違いでした。
CIで出たエラーはこちらです。https://travis-ci.org/DefinitelyTyped/DefinitelyTyped/builds/510977291
エラーを見ると「The specified version 4.0.2 of get-port is not on npm.」となっていて、「4.0.2は存在してないnpmパッケージだよ」といっています。
これを頼りに、get-port公式で で型定義が対応した4.2.0を指定してCIも通りました。

PRの具体的な経緯

実は最初はあのPRは削除する用のPRじゃなかったです。それを書くとごちゃごちゃすると思って触れていません。
もし、詳細知りたいよって方は、Qiita投稿前に書いていた:https://scrapbox.io/nwtgck/DefinitelyTyped(@types)%E3%81%AE%E5%9E%8B%E5%AE%9A%E7%BE%A9%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8BPR%E3%82%92%E5%87%BA%E3%81%99%E3%81%A8%E3%81%8Dに書いてあります。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?