Necesitamos integrar el corredor de prueba de Karma en TeamCity y para eso me gustaría dar un pequeño script a los ingenieros del sistema (powershell o lo que sea) que:
recoger el número de versión deseado de algún archivo de configuración (supongo que puedo ponerlo como comentario directamente en el
karma.conf.js)compruebe si la versión definida de karma runner está instalada en el repositorio global de npm
si no lo es, o la versión instalada es anterior a la deseada: seleccione e instale la versión correcta
ejecutarlo:
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
Entonces, mi verdadera pregunta es: "¿cómo se puede registrar un script, si está instalada la versión deseada del paquete?". ¿Debería hacer la verificación, o es seguro simplemente llamar npm -g installcada vez?
No quiero verificar e instalar siempre la última versión disponible, porque otros valores de configuración pueden volverse incompatibles
fuente

npm updateespecialmente connpm update -g... ¡no es lo que la mayoría de las personas esperan que haga! Ver: github.com/npm/npm/issues/6247 y gist.github.com/othiym23/4ac31155da23962afd0enpm -g updatees seguro volver a usarlo. github.com/npm/npm/issues/6247#issuecomment-92182814As of [email protected], 'npm update' will change package.json to save the new version as the minimum required dependencydocs.npmjs.com/cli/update.htmlnpm outdatedidentificará los paquetes que deben actualizarse ynpm update <package name>se pueden usar para actualizar cada paquete. Pero antes de [email protected],npm update <package name>no actualizará las versiones en su package.json, lo cual es un problema.El mejor flujo de trabajo es:
npm updatepara instalar las últimas versiones de cada paqueteEcha un vistazo
npm-check-updatespara ayudar con este flujo de trabajo.npm-check-updatespara enumerar qué paquetes están desactualizados (básicamente lo mismo que ejecutarnpm outdated)npm-check-updates -upara actualizar todas las versiones en su package.json (esta es la salsa mágica)npm updatecomo de costumbre para instalar las nuevas versiones de sus paquetes basadas en el paquete actualizado jsonfuente
npm outdatedmostrará TODOS los paquetes ... incluso dentro de otros paquetes ... pero esos no se actualizarán con este procedimiento, por lo que siempre aparecerán ... así que solo usenpm-check-updates(como realmente lo recomendó) que solo muestra los paquetes principales depackage.json... esto es relevantenpm install --all-outdatedpero no lo es ...npm update --save package_namepara guardar el último cambio en package.json.npm updatevsnpm-check-updates?También hay un módulo "nuevo" llamado
npm-check:También proporciona una forma interactiva conveniente de actualizar las dependencias.
fuente
Un paso fácil:
$ npm i -g npm-check-updates && ncu -u && npm iEso es todo. Todas las versiones del paquete
package.jsonserán las últimas versiones principales.Editar:
¿Que está sucediendo aquí?
fuente
ncusiglas de node-check-updates y-aes la opción 'upgradeAll'. Encuentre todas las opciones aquí: npmjs.com/package/npm-check-updatesnpx -p npm-check-updates ncu -uPara actualizar un solo paquete local:
Primero descubra sus paquetes obsoletos:
npm outdatedLuego actualice el paquete o paquetes que desee manualmente como:
npm update --save package_nameDe esta manera, no es necesario actualizar su
package.jsonarchivo local .Tenga en cuenta que esto actualizará su paquete a la última versión.
Si escribe alguna versión en su
package.jsonarchivo y hace:npm update package_nameEn este caso, obtendrá la próxima versión estable (deseada) con respecto a la versión que escribió en su
package.jsonarchivo.Y con
npm list (package_name)usted puede averiguar la versión actual de sus paquetes locales.fuente
Comandos NPM para actualizar o corregir vulnerabilidades en algunos archivos de manifiesto de dependencia
Utilice el siguiente comando para verificar las vulnerabilidades o las versiones obsoletas en sus módulos de nodo.
Si se encuentran vulnerabilidades, utilice el siguiente comando para solucionar todos los problemas.
Si no funciona para usted, intente
Si no desea utilizar la corrección de auditoría forzada, puede corregir manualmente las versiones de sus dependencias cambiándolas en el archivo package-lock.json y package.json . Entonces corre
npm update && npm upgradefuente
Consultar paquetes desactualizados
Verifique y elija paquetes para actualizar
npm img desactualizado
npx npm-check -u img
fuente
Sin paquetes adicionales, para verificar si están desactualizados y actualizar los que están, este comando hará:
npm install $(npm outdated | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@latest' | xargs echo)fuente
Al instalar paquetes npm (tanto global como localmente), puede definir una versión específica mediante el uso de la
@versionsintaxis para definir la versión que se instalará.En otras palabras, hacer:
npm install -g [email protected]asegurará que solo 0.9.2 esté instalado y no se reinstalará si ya existe.Como consejo, sugeriría evitar las instalaciones globales de npm siempre que pueda. Muchas personas no se dan cuenta de que si una dependencia define un archivo bin, se instala en ./node_modules/.bin/. A menudo, es muy fácil de usar esa versión local de un módulo instalado que se define en su package.json. De hecho, los scripts npm agregarán ./node_modules/.bin a su ruta.
Como ejemplo, aquí hay un package.json que, cuando ejecuto
npm install && npm test, instalará la versión de karma definida en mi package.json, y usaré esa versión de karma (instalada en node_modules / .bin / karma) cuando ejecute eltestscript:Esto le brinda el beneficio de su package.json que define la versión de karma a usar y no tiene que mantener esa configuración globalmente en su caja CI.
fuente
testguión? ¿Puede darme una idea de cómo lo instala con un script?npm test. Los documentos de npm son bastante buenos aquí: npmjs.org/doc/scripts.htmlA partir de [email protected]+ simplemente puede hacer:
Esto actualizará automáticamente el
package.jsonarchivo. No tenemos que actualizar la última versión manualmente y luego usarnpm update <package name>Todavía puede obtener el comportamiento anterior usando
( Referencia )
fuente
Para actualizar realmente solo un paquete, instale NCU y luego ejecútelo solo para ese paquete. Esto se topará con lo último real.
fuente