LoginSignup
10
8

More than 5 years have passed since last update.

Microsoft/types-publisher を調べる

Posted at

DTのメンテナなのにいつまでも知らんぽい!じゃまずいもんね。
https://github.com/Microsoft/types-publisher

調べる範囲

今後、DefinitelyTypedのtypes-2.0ブランチに来るpull requestのレビューに参加し、安心・安全に活動できる基礎知識が得られるまで調べる。

覚えておきたい

  • DTにある型定義ファイルを@types/としてpublishする
  • DTに置く型定義ファイルの好ましい書き方も変化する
    • @types/ 配下の場合と既存のtypings配下とかに落とす場合、デフォルトでは振る舞いが違う(ファイルパスからモジュール名が一意に決められるので
    • 具体的にここにあるとおり、モジュールの形態は Global, ProperModule, ModuleAugmentation, UMD のどれかが好ましい(要するにdeclare module "xxx"無しがよい
    • 既存の書き方だと MultipleModules, Mixed, DeclareModule のどれかになるんじゃないかなー
  • 処理対象はxxx/xxx.d.tsxxx/index.d.ts
    • 前者が優先 でも推奨構成は後者のはずだ
  • 将来的にはwebhookで自動化するっぽい 今は手動で実行しているはず
    • READMEに書いてある手順は完全には真似できない Azureのアクセス権限がない
  • どのブランチを見るかとかはsettings.jsonに書いてある(今はtypes-2.0ブランチ
  • 型定義ファイルのヘッダ行のバージョン表記をパースし、@typesパッケージにmajorとminorを流用する
  • patch versionは型定義ファイルには依存せず、@typesにpublishするたびに単調増加する
    • 要するにpatch versionが一番でかいヤツが最後にpublishされたやつ
  • 自前で型定義ファイルを抱えているパッケージはaliasとなる@typesパッケージを作成する
    • DefinitelyTypedのrootにあるnotNeededPackages.jsonを参照する
    • 現状angular2とmomentがこれに該当する
  • definition-tester 相当の機能は持っていない(中身舐めてpublishするだけ
  • TypeSearchのデータもこいつが作ってる(はず
  • レビューする時、バージョンの変更が含まれてたら裏取りをしっかりすること
    • 例えばNode.js 10.0.0とかをうっかりmergeしちゃうとうっかり@types/node10.0.99みたいなのが生成されちゃって死ぬ
    • なんとか取り消ししてもnpm install @types/node で自然と入るのがそっちになってしまいめちゃめちゃ不便になる
    • npm kik unpublish事件があったので気軽にunpublishもできやしないぜ!

細かいことや不明点は聞いてくれたら調べたり書いたりします。

そういやscoped packageに対する型定義ファイルの作成とかが考慮されてない気がする(既知の問題なんだけどtypes-2.0でも未考慮っぽい

あと、New Contribution Guide/Transition Issues DT/types-2.0 and @typesというIssueが立ってるけどめっちゃ長くてぎゃおーー!ってなってる。I need TL;DR!

メモ

バージョンの切り出し処理このへん 若干雑い
definition-headerが使われてないのは少し悲しい

サーバ処理中になんかあったとき、Issueに自動でポストされるっぽい仕組みがあって面白かった(このへん

このへんでpatch versionをエンヤコラしてる

このへんでnotNeededPackages.json関連のpackage.json生成処理してる
ぶっちゃけ、一箇所にまとまってても見ないのでmoment/notNeededPackage.jsonとかしたほうがわかりやすそう。
気が向いたら議論したりpull request作ったりしようかな。
ついでにnpm上でdeprecatedとしてマークするようにしたさがある。

Node.jsの型定義ファイルが更新されてもそれに依存しているライブラリ郡がpublishされなおさないので悲しみが鬼なるみたいな現象があったはず(出典探すのがめんどい

ものすごい気軽にtypes-2.0にmasterをmergeしようとしたら大量の作業が発生しそうになったのでそっとgit merge --abortした。
types-2.0へのpull requestは可能な限りmasterへのPRに変えてもらうよう誘導しないとダメそう…?逆か?
なんにせよこの運用をずっと続けていくと精神がぶっ壊れて死んでしまうゾ…!

10
8
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
10
8