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?
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.
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".