Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

やりたいこと

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に書いてあります。

nwtgck
最近はScrapbox → https://scrapbox.io/nwtgck
https://scrapbox.io/nwtgck
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした