2017-11-21 34 views
2

外部の依存関係がある場合、新しい型をDefinitelyTypedに追加する方法を理解するのに問題があります。パッケージがホワイトリストに登録されていないので、フォルダにpackage.jsonを追加しない限り、モジュールが見つからないためテストをパスすることができません。ここで外部依存関係を持つ新しいタイプをDefinitelyTypedに追加するにはどうすればよいですか?

は、プルリクエストです:

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/21581

// index.d.ts 

import { 
    ApolloClient, 
    ObservableQuery, 
    WatchQueryOptions, 
    ApolloError 
} from 'apollo-client'; 

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/21581/files#diff-bedcd6706b6ae7a6f6df5951737dcc31R12

はまた、私のテストでは、私は実際にそれを使用できるように、私は必要ないくつかの他の依存関係がありますが、devDependenciesではありませんリンターによって許可されています。 。

: -

のでpackage.jsonせずに、私はモジュールが 『暴徒-アポロ』が見つかりません」と言うテスト中にエラーが発生します理にかなって

は、だから私はpackage.jsonを追加しました

{ 
    "private": true, 
    "dependencies": { 
     "apollo-client": "^2.0.0", 
     "graphql-tag": "^2.0.0", 
     "mobx": "^3.0.0" 
    } 
} 

今、私はリンター中にエラーが発生します:あなたはホワイトリストを見れば

Error: In /home/travis/build/DefinitelyTyped/DefinitelyTyped/types/mobx-apollo/package.json: Dependency apollo-client not in whitelist; please make a pull request to types-publisher adding it.

はしかし、それは非常に小さいので、これはこの問題に対処する適切な方法することはできません...ですそれは?私はあなたが腐っていなければならないと思います依存関係を持っているすべてのパッケージに対して、このリストは膨大なものになります。

https://github.com/Microsoft/types-publisher/blob/master/dependenciesWhitelist.txt

だから私はここに何をすべきでしょうか?

答えて

2

外部パッケージの依存関係は、独自のタイプを定義するパッケージにのみ必要です。その他のものは、tsconfig.json内の"typeRoots": ["../"]を経由してDTレポから直接コンパイラに見つかるため、ホワイトリストは短く一般的ですDT自体から来ています。

*.d.tsとテストファイルでインポートするとき、コンパイラはJSを生成するのではなくタイプ情報をインポートするだけなので、実際のパッケージは必要ありません。定義のみ - これらが外部パッケージの場合はそのパッケージは正当な依存関係はありますが、まだJSは生成されません。コンパイラテストのみです

この場合、TSで書かれているようにapollo-clientをホワイトリストに追加することは完全に有効である必要があります。定義

他の依存関係については、テストケースの場合のみで、t独自のパッケージだけでなく、MobXのコンテキストでの統合もテストします.MobXは、これらのパッケージ(独自の型を定義する場合は-)を持ち込むか、自分自身の、または既にDTに入っているタイプのデフ(graphql-tagのような)。あなたはそれを単純なままにして、テストケースから外しておくことができます。これはまた、これらを最新の状態に保つ必要があるメンテナンスオーバーヘッドも少なくなります。

+0

したがって、独自のタイプを定義するパッケージDefinitelyTypedで)、ホワイトリストに依存関係を追加する必要がありますか? – Paul

+0

これは通常、TS自体のプロジェクトソースによって生成されるため、手書きの代替案よりはるかに正確で揮発性が低い傾向があり、常に最新の状態になるため、DTの方が望ましいので、そのような場合にはパッケージがホワイトリストに登録されている必要はありません – alechill

関連する問題