typescript - samsung - Cómo actualizar manualmente un paquete de typings obsoleto
como actualizar mozilla firefox en ubuntu (1)
Tengo una aplicación NodeJS que estoy escribiendo en TypeScript. Utiliza muchos paquetes de nodo. No todos estos paquetes tienen definiciones de TypeScript, entonces utilizo Typings para obtener los archivos de definición separados.
Cuando despliegue mi aplicación en el servidor de producción, tengo un gancho Git que ejecuta npm install
, typings install
y tsc
, ya que estos no están incluidos en el repositorio de Git.
Cuando se lanza una nueva versión de un archivo de definición de Typings en DefinitelyTyped, recibo advertencias cuando se ejecuta typings install
que mis archivos de definiciones están en desuso (actualizados, reemplazados o eliminados):
typings WARN deprecated 6/30/2016: "registry:dt/bluebird#2.0.0+20160319051630" is deprecated (updated, replaced or removed) typings WARN deprecated 7/5/2016: "registry:dt/knex#0.0.0+20160622193910" is deprecated (updated, replaced or removed) typings WARN deprecated 7/20/2016: "registry:dt/node#6.0.0+20160613154055" is deprecated (updated, replaced or removed) typings WARN deprecated 7/19/2016: "registry:dt/lodash#3.10.0+20160619033623" is deprecated (updated, replaced or removed)
¿Qué se puede hacer con esto? ¿Hay alguna manera fácil de actualizarlos a todos? Parece que el archivo typings.json especifica un número de versión para el paquete después del signo # y una fecha después del signo +. Si un archivo de definiciones nuevo se carga a DefinitelyTyped, ¿no es generalmente seguro asumir que es más preciso o más completo que la versión anterior?
¿Existe alguna forma aprobada de actualizar estos datos manualmente, aparte de la typings uninstall --save
seguido de la typings install --save
? ¿ typings install --save
para cada paquete? Parece una molestia, y debería haber alguna manera fácil, algo así como la typings update [package-name]
.
Fácil en TypeScript 2.0
También se debe mencionar que TypeScript 2.0, lanzado oficialmente en septiembre de 2016 , tiene una solución más fácil integrada en npm
(en colaboración con el autor de Typings y los autores de TSD). Donde esencialmente obtienes los paquetes Definitely Typed como @types/packageName
:
npm install --save packageName @types/packageName
además de poder obtener automáticamente tipos de paquetes npm directamente. De este modo, le permite usar simplemente package.json
y npm
para administrar directamente sus definiciones de tipo. En ese caso
npm update
obtendrá exactamente el comportamiento que originalmente solicitó.
Consulte la publicación del blog del anuncio beta y la documentación oficial de Typescript para obtener más información.
Los cambios de última hora de @types no desencadenan advertencias
Sin embargo, quisiera señalar que un miembro del equipo de Typescript (Ryan Cavanaugh) mencionó en la sección de comentarios del anuncio Beta de TypeScript que al menos la versión actual de la Beta a la que se estaba refiriendo no advirtió sobre definiciones de tipo desactualizadas. Incluso para las últimas actualizaciones importantes. Es decir, si quería definiciones de tipos para la versión 4 de lodash y, en su lugar, obtuvo la versión 3 de lodash, no habría ninguna advertencia. Obteniendo la definición de tipo para una biblioteca que ha pasado por cambios de última hora. Algo que posiblemente tenga en mente (EDITAR: Aún no he confirmado si este es el caso para la versión 2.0 final).
Sin comando de actualización
No hay un comando de actualización, hay un problema con el sistema Typings , que contiene scripts tanto de Unix como de PowerShell para hacer automáticamente algún tipo de actualización.
Comando de instalación específico
Como puede ver en las opciones de la CLI, puede actualizar la definición de tipo para un paquete específico con un rango específico de origen y detención.
Si la fuente es Definitivamente Tipo, prefijaría el paquete con dt~
. Mientras que si tienes la versión de Sever ^3.10.0
, sufijo aún más el nombre del paquete con @^3.10.0
.
Dependiendo de si se trata de una dependencia normal o de desarrollo, también debería agregar --save
o --save-dev
respectivamente. Si bien también agregaría --global
si se trata de una dependencia global de ese tipo. Esto debería ser legible en el archivo typings.json
Para actualizar el paquete lodash que mencionó anteriormente a la última definición de tipo con la versión de ^3.10.0
, debería escribir:
typings install dt~lodash@^3.10.0 --save
o
typings install dt~lodash@^3.10.0 --save --global
si es una dependencia global
Esto actualizará el hash y la fecha de typings.json e instalará la última definición para el rango dado de Sever. Si bien no hay una actualización que se encuentre, no hay cambios en el archivo. Si está configurado para automatizar este proceso de actualización, podría escribir un script que intente hacer estas actualizaciones independientemente.
Advertencias
Tenga en cuenta que las definiciones de tipo Definitivamente tipadas no necesariamente siempre se etiquetan correctamente con las versiones. Potencialmente carente por completo de versiones etiquetadas o con grandes diferencias entre ellos. Por ejemplo, también podría ser que una versión no etiquetada es más nueva que la última versión etiquetada, este es actualmente el caso de lodash en Definitely Typed (25 de junio de 2016).
Puede descubrir fácilmente qué versiones etiquetadas existen para un paquete determinado en una fuente determinada con:
typings view <source>~<package> --versions
para el paquete lodash con Definitely Typed como la fuente sería así:
typings view dt~lodash --versions
Para ver versiones sin etiquetar que podrían estar más actualizadas, creo que tienes que inspeccionar realmente el directorio correspondiente en el repositorio Definitely Typed, donde podría mencionarse en la confirmación más reciente o en la parte superior del archivo.