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.ts
かxxx/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/node
の10.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に変えてもらうよう誘導しないとダメそう…?逆か?
なんにせよこの運用をずっと続けていくと精神がぶっ壊れて死んでしまうゾ…!