web-dev-qa-db-fra.com

Comment puis-je décider si @ types / * va dans `dependencies` ou` devDependencies`?

J'utilise TypeScript 2 dans mon projet. J'aimerais utiliser une bibliothèque js, mais aussi des dactylographies pour cette bibliothèque. Je peux installer des types avec un simple npm install @types/some-library. Je ne suis pas sûr de devoir --save ou --save-dev. Il me semble que même le fichier Lisez-moi de DefinitelyTyped GitHub mentionne les deux versions, mais ne les explique jamais. Je pense que les @ types doivent être dans devDependencies, car les types sont nécessaires au développement et ne sont pas utilisés au moment de l'exécution, mais j'ai souvent vu des @ types dans dependencies. Je suis confus.

Comment devrais-je décider si @ types/* entre dans dependencies ou devDependencies? Existe-t-il des instructions plus ou moins officielles?

101
kamyl

Supposons que vous développiez un paquet "A" contenant le paquet @ types/some-module dans devDependencies. Pour une raison quelconque, vous exportez le type à partir de @ types/some-module

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

     }
}

Actuellement, les consommateurs TypeScript du package "A" sont incapables de deviner ce qu'est SomeType, car devDependencies du package "A" ne sont PAS installés.

Dans ce cas particulier, vous devez BESOIN de placer le paquet @ types/* avec des "dépendances" régulières. Pour les autres cas, "devDependencies" suffit.

71
wookieb

Générez-vous un paquet? Si tel est le cas, je vous conseillerais de ne pas perdre trop de temps à débattre de ce qui se passe où. devDependencies et dependencies n'ont de sens que si vous publiez un paquet pouvant être utilisé par d'autres et si vous ne souhaitez pas les spammer avec des dépendances inutiles.

Placez-le dans devDependencies. Comme vous l'avez dit "les types sont nécessaires au développement et ne sont pas utilisés au moment de l'exécution".

32
Valentin