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 install
cada vez?
No quiero verificar e instalar siempre la última versión disponible, porque otros valores de configuración pueden volverse incompatibles
fuente
npm update
especialmente 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 update
es 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 dependency
docs.npmjs.com/cli/update.htmlnpm outdated
identificará 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 update
para instalar las últimas versiones de cada paqueteEcha un vistazo
npm-check-updates
para ayudar con este flujo de trabajo.npm-check-updates
para enumerar qué paquetes están desactualizados (básicamente lo mismo que ejecutarnpm outdated
)npm-check-updates -u
para actualizar todas las versiones en su package.json (esta es la salsa mágica)npm update
como de costumbre para instalar las nuevas versiones de sus paquetes basadas en el paquete actualizado jsonfuente
npm outdated
mostrará 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-outdated
pero no lo es ...npm update --save package_name
para guardar el último cambio en package.json.npm update
vsnpm-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 i
Eso es todo. Todas las versiones del paquete
package.json
serán las últimas versiones principales.Editar:
¿Que está sucediendo aquí?
fuente
ncu
siglas de node-check-updates y-a
es la opción 'upgradeAll'. Encuentre todas las opciones aquí: npmjs.com/package/npm-check-updatesnpx -p npm-check-updates ncu -u
Para actualizar un solo paquete local:
Primero descubra sus paquetes obsoletos:
npm outdated
Luego actualice el paquete o paquetes que desee manualmente como:
npm update --save package_name
De esta manera, no es necesario actualizar su
package.json
archivo local .Tenga en cuenta que esto actualizará su paquete a la última versión.
Si escribe alguna versión en su
package.json
archivo y hace:npm update package_name
En este caso, obtendrá la próxima versión estable (deseada) con respecto a la versión que escribió en su
package.json
archivo.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 upgrade
fuente
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
@version
sintaxis 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 eltest
script: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
test
guió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.json
archivo. 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