¿Cómo puedo actualizar todas mis dependencias?

4 minutos de lectura

avatar de usuario de tutuca
tutuca

Teniendo yarn outdated es bastante informativo, pero me gustaría evitar ejecutar paquete por paquete haciendo yarn upgrade.

De la documentación de yarn, solo yarn upgrade sin argumentos se dice que actualiza todas las dependencias pero no hay cambios en mi proyecto package.json y yarn outdated muestra las mismas versiones de paquetes que antes.

¿Hay algún comando o argumento que supere todas mis dependencias?

Si no, ¿se desalienta la práctica de alguna manera?

Actualizar todos los paquetes a la última versión

yarn upgrade --latest

avatar de usuario de braza
braza

Puede actualizar sus paquetes a la última versión especificada en el paquete.json usando yarn upgrade sin ningún argumento.

Esto está tomado de la documentos:

yarn upgrade

Este comando actualiza todas las dependencias a su última versión según el rango de versiones especificado en el archivo package.json. El archivo yarn.lock también se volverá a crear.

Esto solo actualizará los paquetes que se pueden actualizar en el paquete.json, por ejemplo, usando ^ (p.ej ^0.13.0 actualizaría a la versión 0.14.0 si existiera). Esto no actualizará su archivo package.json, pero actualizará yarn.lock.

Si desea actualizar las dependencias a la última versión, puede usar el paquete npm-check-updates que actualizará su paquete.json:

$ yarn global add npm-check-updates
$ npm-check-updates -u
$ yarn upgrade

  • Bien. Tal vez sí. Pero no se refleja en mi package.json y yarn outdated no muestra ninguna diferencia antes y después de una serie completa de yarn upgrade. ¿Qué me estoy perdiendo?

    – tutuca

    19 de diciembre de 2016 a las 11:56

  • Me dí cuenta que yarn upgrade solo actualiza los paquetes a la última versión en el paquete.json si está utilizando ^ o ~. Si su paquete se especifica como una versión fija, esto no cambiará. Edité mi respuesta para agregar una opción para actualizar su paquete.json.

    – braza

    19 dic 2016 a las 15:34

  • Has probado yarn upgrade --latest ¿dominio? De acuerdo con la documentación, según entendí, también actualiza el paquete.json.

    – Kosala Nuwan Perera

    24 de agosto de 2019 a las 6:22

solo corre yarn upgrade-interactive --latest y seleccione los paquetes que desea actualizar usando el botón de espacio y presione Intro para actualizar.

  • NOTA: Deberá importar el interactive-tools complemento para yarn antes de usar upgrade-interactiveejecutando este comando: yarn plugin import interactive-tools.

    – Josué Pinter

    6 de febrero de 2022 a las 0:13

Avatar de usuario de Paul Razvan Berg
Pablo Razvan Berg

Respuesta para usuarios de Yarn v2 y superior.

Importar el interactive-tools enchufar:

$ yarn plugin import interactive-tools

Y ejecútalo así:

$ yarn upgrade-interactive

Tenga en cuenta que esto también modificará los servidores en su package.json.

Si sus dependencias están usando una versión de rango ("^x.x.x", "~x.x.x"etc.), su package.json no se actualizará si la última versión también coincide con ese rango, solo su yarn.lock.

si quieres tu package.json Para actualizarse:

  1. Cambie todas sus dependencias a una versión fija ("x.x.x")
  2. Correr yarn para actualizar el yarn.lock
  3. Correr yarn upgrade-interactive y seleccione todas las dependencias que desea actualizar

Ahora tanto su yarn.lock y package.json reflejará las últimas versiones exactas.

Avatar de usuario de OCP30pt1c1l1l43-X1z17
OCP30pt1c1l1l43-X1z17

También puede copiar sus dependencias en un patio de juegos mecanografiado o javascript y usar Object.entries(obj).reduce((xs, x) => ${x} ${x[0] }, "yarn add") para generar el comando que contiene todos los paquetes dentro de su package.json.

Ejemplo

let obj = {
    "@types/react": "^16.3.18",
    "@types/react-dom": "^16.0.6",
    "awesome-typescript-loader": "^5.1.0",
    "babel-polyfill": "^6.26.0",
    "del": "2.2.2",
    "es-cookie": "^1.2.0",
    "es6-promise": "4.1.1",
    "gulp": "^4.0.2",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-clean-css": "^3.0.2",
    "gulp-concat": "^2.6.1",
    "gulp-if": "^2.0.2",
    "gulp-jshint": "^2.0.4",
    "gulp-merge-media-queries": "0.2.1",
    "gulp-rename": "^1.2.2",
    "gulp-rev-all": "^0.9.7",
    "gulp-sass": "^3.1.0",
    "gulp-uglify": "^2.0.1",
    "jshint": "^2.9.4",
    "node-promise": "^0.5.12",
    "react": "^16.4.1",
    "react-dom": "^16.4.1",
    "require-dir": "^0.3.2",
    "run-sequence": "1.2.2",
    "source-map-loader": "^0.2.3",
    "typescript": "^2.9.2",
    "webpack": "^4.12.0",
    "webpack-cli": "^3.0.8",
    "webpack-log": "^1.2.0"
  }

  let res = Object.entries(obj).reduce((xs, x) => `${xs} ${x[0] }`, "yarn add")

  console.log(res)

Producción:

hilo añadir @types/react @types/react-dom impresionante-mecanografiado-cargador babel-polyfill del es-cookie es6-promise trago trago-autoprefijo trago-limpio-css trago-concat trago-si trago-jshint trago-merge-media -consultas gulp-rename gulp-rev-all gulp-sass gulp-uglify jshint nodo-promise reaccionar reaccionar-dom require-dir run-sequence source-map-loader typescript webpack webpack-cli webpack-log

Uso este patio de recreo para generar rápidamente el comando. También es útil para generar código rápidamente a partir de objetos json.

https://www.typescriptlang.org/play?ssl=35&ssc=19&pln=1&pc=1#code/DYUwLgBA9gRgVhAvBA3gKApiAiAAmATwAcQBnAegCcQBDAYzGwC4cA9ARgDYA6AZm-YAObABoMWPIRIVq9MAFoAJlAC2zNl24AGbp1HjM2GgHcyqkPKlk6lAJZEFwKDUUhK67KwCsA7fqw4MDQwIMDyRFDABABmtsDAHqw8AEw8Wv4Srgks2MnceckZhmTydFBQANa2IIns+X5iAdhknOGUqrakNTkALL7sRTgA5gCuwESJfTqFjRKj4-I0I2BQRNSxAB5uifx1A7OG80SloDQAdqWkpDva+YPYR6VQZ3Q0jDmseTz7BsNjx7Zook8tN7o84KQABa2M7vNgg7g9MH-eQqNxDCxoxS2GjyACOIzc1WuOWmAmRC2oZxoaNq9RmvweKOoADdFvFEjoAJzcADsFOOpBoVxudXSBz+CxGQ2AgIIwNuPyaEOhsIVPKREuwZygrjaHS6nO4PnYDKasgYtR4fSVEgtCmUag+mht92oBNs1CUnqN-DNdpGFy6BJAL26ODqBXupCgI0odExNGOThc2w+ZN49yspBs9jhnjyPP9hlMMCI9AqkwEIPupfLdAqJ1sNx0wi1dYr8icQzpNfEAF80OJQJBqKQkBAAPLwEAMbihsB2MgAClgcAAlNxqIoRgnl8uNqQRBANuukAA+CAAAwAJChD-2IHeNgBtLQAXQg-avx+ wBBolBnBALiKNg65DpgZRnDGoDcN2y5juuQA

¿Ha sido útil esta solución?