web-dev-qa-db-ja.com

@ types / *が「dependencies」または「devDependencies」に入るかどうかをどのように判断しますか

プロジェクトでTypeScript 2を使用しています。私はいくつかのjsライブラリを使用したいと思いますが、そのライブラリのタイピングも使用します。単純なnpm install @types/some-libraryでタイプをインストールできます。それらを--saveまたは--save-devすべきかどうかはわかりません。 DefinetelyTyped GitHubのreadmeでも、両方のバージョンについて言及しているように見えますが、説明はしていません。開発には型が必要であり、実行時には使用されないため、@ typesはdevDependenciesにあるべきだと思いますが、@ typesをdependenciesで何度も見ました。よくわかりません。

@ types/*がdependenciesdevDependenciesのどちらに入るかをどのように決定すればよいですか?実際に多少の公式指示はありますか?

80
kamyl

DevDependenciesに@ types/some-moduleパッケージを持つパッケージ「A」を開発しているとしましょう。何らかの理由で、@ types/some-moduleからタイプをエクスポートしています

import {SomeType} from 'some-module';
export default class APackageClass {
     constructor(private config: SomeType) {

     }
}

現在、パッケージ "A"のdevDependenciesはインストールされていないため、パッケージ "A"のTypeScriptコンシューマーはSomeTypeを推測できません。

その特定のケースでは、通常の「依存関係」で@ types/*パッケージを配置する必要があります。その他の場合は、「devDependencies」で十分です。

57
wookieb

バンドルを生成していますか?もしそうなら、どこに行くのかを議論するのに時間をかけすぎないことをお勧めします。 devDependenciesdependenciesは、他のユーザーが使用できるパッケージを公開していて、無用の依存関係でスパムを送信したくない場合にのみ意味があります。

devDependenciesに配置します。あなたが言ったように「開発には型が必要であり、実行時には使用されません」

29
Valentin