web-dev-qa-db-fra.com

Comment mettre à jour manuellement un package de typage obsolète

J'ai une application NodeJS que j'écris en TypeScript. Il utilise de nombreux packages Node. Tous ces packages n'ont pas de définitions TypeScript, donc j'utilise Typings pour obtenir les fichiers de définition séparés.

Lorsque je déploie mon application sur le serveur de production, j'ai un hook Git qui exécute npm install, typings install et tsc, car ceux-ci ne sont pas inclus dans le référentiel Git.

Lorsqu'une nouvelle version d'un fichier de définition de typages est publiée sur DefinitelyTyped, je reçois des avertissements lorsqu'il s'exécute typings install que mes fichiers de définitions sont obsolètes (mis à jour, remplacés ou supprimés):

 typages WARN déconseillés 30/06/2016: "registre: dt/bluebird # 2.0.0 + 20160319051630" est déconseillé (mis à jour, remplacé ou supprimé) 
 typages WARN déconseillés 05/07/2016: "Registre: dt/knex # 0.0.0 + 20160622193910" est obsolète (mis à jour, remplacé ou supprimé) 
 typages WARN obsolète 20/07/2016: "Registre: dt/node # 6.0.0 + 20160613154055" est obsolète (mis à jour, remplacé ou supprimé) 
 typages WARN obsolète 19/07/2016: "registre: dt/lodash # 3.10.0 + 20160619033623" est obsolète (mis à jour, remplacé ou supprimé) 

Que peut-on faire à ce sujet? Existe-t-il un moyen simple de les mettre à jour tous? Il semble que le fichier typings.json spécifie un numéro de version pour le package après le signe # et une date après le signe +. Si un nouveau fichier de définitions est téléchargé sur DefinitelyTyped, n'est-il pas généralement sûr de supposer qu'il est plus précis ou plus complet que la version précédente?

Existe-t-il même un moyen autorisé de les mettre à jour manuellement, à part typings uninstall --save suivi par typings install --save pour chaque colis? On dirait un tracas, et il devrait y avoir un moyen simple, quelque chose comme typings update [package-name].

26
Travesty3

Facile dans TypeScript 2.0

Il convient également de mentionner que TypeScript 2.0, officiellement publié en septembre 2016 , a une solution plus simple intégrée dans npm (en collaboration avec l'auteur Typings et les auteurs TSD). Où vous obtenez essentiellement les packages définitivement définis comme @types/packageName:

npm install --save packageName @types/packageName

tout en étant capable d'obtenir automatiquement des types directement depuis les packages npm. Vous permettant ainsi d'utiliser simplement package.json et npm pour gérer directement vos définitions de type. Dans quel cas

npm update

obtiendra exactement le comportement que vous aviez initialement demandé.

Consultez le article de blog de l'annonce bêta et documentation TypeScript officielle pour plus d'informations.


Les changements de rupture de @types ne déclenchent pas d'avertissement

Je voudrais cependant noter qu'un membre de l'équipe TypeScript (Ryan Cavanaugh) a mentionné dans la section commentaire de annonce de la bêta de TypeScript qu'au moins la version actuelle de la bêta à laquelle il faisait référence ne l'avait pas averti Définitions de type à jour. Même pour les mises à jour majeures. Ce qui signifie que si vous vouliez des définitions de type pour lodash version 4 et que vous obteniez plutôt pour lodash version 3, il n'y aurait pas d'avertissement. Ainsi, obtenir la définition de type pour une bibliothèque qui a subi des changements de rupture. Juste quelque chose à avoir potentiellement à l'esprit (EDIT: Je n'ai personnellement pas encore confirmé si c'est le cas pour la version 2.0 finale.).

Aucune commande de mise à jour

Il n'y a pas de commande de mise à jour, il y a problème sur Typings à ce sujet, contenant à la fois des scripts Unix et PowerShell pour effectuer automatiquement une sorte de mise à jour.

Commande d'installation spécifique

Comme vous pouvez le voir dans les options CLI, vous pouvez cependant mettre à jour la définition de type pour un package spécifique avec une plage source et semver spécifique.

Si la source est définitivement définie, vous préfixez le package avec dt~. Alors que si vous avez la version semver ^3.10.0, vous suffixeriez le nom du package avec @^3.10.0.

Selon qu'il s'agit d'une dépendance régulière ou de développement, vous ajouteriez également --save ou --save-dev respectivement. Bien que vous ajoutiez également --global s'il s'agit d'une telle dépendance globale. Cela devrait être lisible dans le typings.json fichier

Pour mettre à jour le package lodash que vous avez mentionné ci-dessus vers la dernière définition de type avec la version semver ^3.10.0 vous écririez:

typings install dt~lodash@^3.10.0 --save

ou

typings install dt~lodash@^3.10.0 --save --global

si c'est une dépendance globale.

Cela mettra à jour le hachage et la date de typings.json et installera cette dernière définition pour la plage de semver donnée. Si aucune mise à jour n'est trouvée, aucun changement n'est apporté au fichier. Si vous êtes déterminé à automatiser ce processus de mise à jour, vous pouvez donc écrire un script qui essaie de faire ces mises à jour malgré tout.

Avertissements

Notez que les définitions de type définitivement définies ne sont pas nécessairement toujours correctement étiquetées avec les versions. Potentiellement complètement dépourvu de versions balisées ou présentant de grands écarts entre elles. Il se pourrait par exemple qu'une version non balisée soit plus récente que la dernière version balisée, c'est actuellement le cas pour lodash chez Definitely Typed (25 juin 2016).

Vous pouvez facilement découvrir quelles versions balisées existent pour un package donné à une source donnée avec:

typings view <source>~<package> --versions

pour le paquet lodash avec Definitely Typed comme source ce serait donc:

typings view dt~lodash --versions

Pour voir des versions non balisées qui pourraient être plus à jour, je pense que vous devez réellement inspecter le répertoire correspondant au repo Definitely Typed, où il pourrait être mentionné dans le dernier commit ou indiqué en haut du fichier.

27
Koslun