Copié package.json de otro proyecto y ahora quiero agregar todas las dependencias a sus últimas versiones, ya que este es un proyecto nuevo y no me importa arreglar algo si se rompe.
¿Cuál es la forma más fácil de hacer esto?
La mejor manera que conozco ahora es ejecutar npm info express versiony actualizar package.json manualmente para cada uno. Debe haber una mejor manera.
{
"name": "myproject",
"description": "my node project",
"version": "1.0.0",
"engines": {
"node": "0.8.4",
"npm": "1.1.65"
},
"private": true,
"dependencies": {
"express": "~3.0.3", // how do I get these bumped to latest?
"mongodb": "~1.2.5",
"underscore": "~1.4.2",
"rjs": "~2.9.0",
"jade": "~0.27.2",
"async": "~0.1.22"
}
}
ACTUALIZACIÓN 01/05/19 : Seis años después y todavía mantengo npm-check-updates como una solución integral a este problema. ¡Disfrutar!

npm outdated | sed '1d; s/ .*/@latest/' | xargs npm i --saveRespuestas:
Parece que npm-check-updates es la única forma de hacer que esto suceda ahora.
En npm <3.11:
Simplemente cambie la versión de cada dependencia
*y luego ejecútelanpm update --save. ( Nota: roto en versiones recientes (3.11) de npm ).Antes de:
Después:
Por supuesto, este es el martillo contundente de actualizar las dependencias. Está bien si, como dijiste, el proyecto está vacío y nada puede romperse.
Por otro lado, si está trabajando en un proyecto más maduro, es probable que desee verificar que no haya cambios importantes en sus dependencias antes de actualizar.
Para ver qué módulos están desactualizados, simplemente ejecute
npm outdated. Enumerará todas las dependencias instaladas que tengan versiones más nuevas disponibles.fuente
*en package.json, ya que podría terminar instalando automáticamente una nueva versión del módulo con cambios importantes que rompen su aplicación. Como estamos usando--saveaquí,*se reemplaza con la versión actual de cada paquete.npm install --saveel comodín se deja en mipackage.json.updatetampoco funciona, para mí. Todavía me quedan los comodines. ¿Hay alguna documentación sobre esto que conozca o algún otro recurso que pueda consultar?npm install -g npm-check-updatespara instalar, luegonpm-check-updatespara verificar si sus dependencias tienen actualizaciones ynpm-check-updates -upara actualizar sus versiones de package.json. Entonces es justonpm instally descargará nuevas versiones.npm update --savelugar de hacerlonpm update --save-dev.npm-check-updateses una utilidad que ajusta automáticamente un package.json con la última versión de todas las dependenciasver https://www.npmjs.org/package/npm-check-updates
[EDITAR] Una forma un poco menos intrusiva (evita una instalación global) de hacer esto si tienes una versión moderna de
npmes:fuente
ncu -a, no actualizando package.json también.Actualizado para la última NPM
npm 2+ (Nodo 0.12+):
Ancient npm (circa 2014):
Asegúrate de encoger tus deps, o podrías terminar con un proyecto muerto. El otro día saqué un proyecto y no se ejecutó porque mis departamentos estaban desactualizados / actualizados / un desastre. Si me hubiera encogido, npm habría instalado exactamente lo que necesitaba.
Detalles
Para los curiosos que llegan hasta aquí, esto es lo que recomiendo:
Use
npm-check-updatesonpm outdatedpara sugerir las últimas versiones.Luego haga una instalación limpia (sin el rm recibí algunas advertencias de dependencia)
Por último, guarde versiones exactas
npm-shrinkwrap.jsonconnpm shrinkwrapAhora,
npm installahora usaré versiones exactas ennpm-shrinkwrap.jsonSi se registra
npm-shrinkwrap.jsonen git, todas las instalaciones utilizarán las mismas versiones exactas.Esta es una forma de pasar del desarrollo (todas las actualizaciones, todo el tiempo) a la producción (nadie toca nada).
npm desactualizado
npm-check-updates
npm shrinkwrap
ps Yarn está enviando su lista de paquetes a Facebook .
fuente
npm-shrinkwrap.jsoningresa a la fuente, y se compromete cada vez que actualiza, siempre puede "volver a donde estaba". Pasé por alto la característica de envoltura retráctil cuando comencé.npm updatesolo se actualiza a la versión semver, no la última.yarn upgrade package@version?Para actualizar una dependencia a su última versión sin tener que abrirla manualmente
package.jsony cambiarla, puede ejecutares decir
Como referencia, npm-install
Como señaló el usuario Vespakoen en una edición rechazada, también es posible actualizar varios paquetes a la vez de esta manera:
También admite una línea para el shell basado en
npm outdated. Vea la edición para el código y la explicación.PD: también odio tener que editar manualmente
package.jsonpara cosas así;)fuente
npm install react-native-image-picker@* --savencu express mocha chai. También puede excluir paquetes conncu -x mocha. Estoy de acuerdo en que lo anterior es la solución más simple para actualizar un solo paquete.npm install {package-name}@latest {save flags}Si está utilizando Visual Studio Code como su IDE, esta es una pequeña extensión divertida para actualizar
package.jsonun proceso de un solo clic.Lente de versión
fuente
Esto funciona a partir de npm 1.3.15.
fuente
npm shrinkwrapcongelar los deps."react": "16.9.0"y luego agregué la última y ejecuténpm i, después de esto, ¿cómo puedo encontrar qué versión de reaccionar está ahora en mi proyecto? ya que"react":"latest"es lo que queda en mi package.json, no un número incluso después de que lo hicenpm i*como la versión para los últimos lanzamientos, incluidos los inestableslatestcomo definición de versión para la última versión estableLatestStablePackagesAquí hay un ejemplo:
fuente
La única advertencia que he encontrado con la mejor respuesta anterior es que actualiza los módulos a la última versión. Esto significa que podría actualizarse a una versión alfa inestable.
Usaría esa utilidad npm-check-updates. Mi grupo usó esta herramienta y funcionó efectivamente al instalar las actualizaciones estables.
Como Etienne declaró anteriormente: instalar y ejecutar con esto:
fuente
rm -rf node_modulesantes denpm installdeshacerme de algunas advertencias de dependencia para mí.Para ver qué paquetes tienen versiones más nuevas disponibles, utilice el siguiente comando:
para actualizar solo una dependencia solo use el siguiente comando:
Por ejemplo:
Mi
package.jsonarchivo tiene dependencia:entonces debería escribir:
fuente
Realmente me gusta cómo funciona npm-upgrade . Es una sencilla utilidad de línea de comandos que pasa por todas sus dependencias y le permite ver la versión actual en comparación con la última versión y actualizarla si lo desea.
Aquí hay una captura de pantalla de lo que sucede después de ejecutar
npm-upgradeen la raíz de su proyecto (al lado delpackage.jsonarchivo):Para cada dependencia, puede elegir actualizar, ignorar, ver el registro de cambios o finalizar el proceso. Me ha funcionado muy bien hasta ahora.
EDITAR: Para que quede claro, este es un paquete de terceros que debe instalarse antes de que el comando funcione. No viene con npm en sí:
Luego, desde la raíz de un proyecto que tiene un archivo package.json:
fuente
npm-upgradeno funcionó para mí, pero lonpm upgradehizo y actualizó mi archivo package.json, que era exactamente lo que estaba buscando.npm-upgradees que puedes ver exactamente qué se está actualizando y elegir cuáles se actualizan.npm upgradepuede funcionar bien para la mayoría de las personas, pero a veces necesita tener un poco más de control al actualizar.npx npm-upgrade- ¡genial! :)Aquí hay una expresión regular básica para que coincida con los números de versión semántica para que pueda reemplazarlos rápidamente con un asterisco.
Versión Semántica Regex
Cómo utilizar
Seleccione las versiones de paquete que desea reemplazar en el archivo JSON.
Ingrese la expresión regular anterior y verifique que coincida con el texto correcto.
Reemplace todas las cerillas con un asterisco.
correr
npm update --savefuente
('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+):y presionarctrl+dvarias veces hasta seleccionarlos todos, luego ir al número de versión (presionar la flecha derecha 2 veces) y presionar Ctrl espacio, luego escribir"*"Recientemente tuve que actualizar varios proyectos que usaban npm y package.json para su magia gruntfile.js. El siguiente comando bash (comando multilínea) funcionó bien para mí:
La idea aquí: para canalizar la
npm outdatedsalida como json, ajq(jq es una herramienta de análisis / consulta de línea de comando json)
(observe el uso del
--depthargumento paranpm outdated)jq quitará la salida solo al nombre del paquete de nivel superior.
finalmente xargs pone cada NOMBRE DE BIBLIOTECA uno a la vez en un
npm install LIBRARYNAME --save-devcomandoLo anterior es lo que funcionó para mí en una máquina en funcionamiento: nodo = v0.11.10 osx = 10.9.2 npm = 1.3.24
esto requiere:
xargs http://en.wikipedia.org/wiki/Xargs (creo que es nativo de mi máquina)
y
jq http://stedolan.github.io/jq/ (lo instalé con
brew install jq)Nota: Solo guardo las bibliotecas actualizadas en package.json dentro de la clave json
devDependanciesusando--save-dev, eso era un requisito de mis proyectos, muy posiblemente no el suyo.Luego verifico que todo esté en salsa con un simple
Además, puede verificar las versiones actuales de la biblioteca de nivel superior instaladas con
fuente
awklugar:npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-devcat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-devSi desea utilizar un enfoque suave a través de una hermosa interfaz de informes interactiva (para terminal), sugeriría usar npm-check .
Es menos martillo y le brinda más conocimiento consecuente y control sobre sus actualizaciones de dependencia.
Para darle una idea de lo que le espera aquí hay una captura de pantalla (raspada de la página de git para npm-check):
fuente
Esta característica se ha introducido en
npm v5. actualizar a npm usandonpm install -g npm@latestyactualizar
package.jsoneliminar
/node_modulesypackage-lock.json (if you have any)ejecutar
npm update. esto actualizará las dependencias package.json a la última, basada en semver .para actualizar a la última versión. puedes ir con
npm-check-updatesfuente
Si usa hilo, el siguiente comando actualiza todos los paquetes a su última versión:
yarn upgrade --latestDe sus documentos :
fuente
package.json- github.com/yarnpkg/yarn/issues/4390A partir de npm versión 5.2.0, hay una manera de ejecutar esto en una sola línea sin instalar ningún paquete adicional en su registro global de npm ni localmente en su aplicación. Esto se puede hacer aprovechando la nueva
npxutilidad que se incluye con npm. ( Haga clic aquí para obtener más información ) .Ejecute el siguiente comando en la raíz de su proyecto:
fuente
npm installpara descargar realmente las nuevas dependencias. Así que supongo que esto sólo actualiza la package.json menos que me falta algonpm installdespués de que se hayan actualizado las dependencias.Yo uso
npm-checkpara lograr esto.Otra lista de comandos útil que mantendrá números de versión exactos en
package.jsonfuente
ncu -uy noncu -uaen la segunda última línea. No puedo editar porque no se permite un cambio de caracteres. Muy útil por cierto.Updtr!
https://github.com/peerigon/updtr
fuente
Comandos que tuve que usar para actualizar
package.jsonparaNPM 3.10.10:Antecedentes:
Estaba usando el último comando de @ josh3736 pero mi
package.jsonno fue actualizado. Luego noté el texto descriptivo cuando ejecuténpm-check-updates -u:Al leer la documentación de npm-check-updates puede ver la diferencia:
https://www.npmjs.com/package/npm-check-updates
ncu es un alias para
npm-check-updatescomo se ve en el mensaje al escribirnpm-check-updates -u:fuente
-aes el comportamiento predeterminado, y sobrescribir el paquete.json se deja únicamente a la-uopción.Si está utilizando
yarn,yarn upgrade-interactivees una herramienta realmente elegante que le permite ver sus dependencias obsoletas y luego seleccionar cuáles desea actualizar.Más razones para usar Yarn over
npm. Jefuente
package.json- github.com/yarnpkg/yarn/issues/4390Los comandos anteriores no son seguros porque podría romper su módulo al cambiar de versión. En cambio, recomiendo lo siguiente
npm shrinkwrapcomando.fuente
Intente seguir el comando si usa npm 5 y el nodo 8
npm update --save
fuente
updatecomando no parece aumentar las dependencias más allá de la definición original. Sipackage.jsondeclara"1.2.3"exactamente no obtendrá1.2.4. Eso puede ser bueno o malo :)El siguiente código (que fue aceptado) me escribió algo así como "lleva demasiado tiempo, bla, bla" y no hizo nada. Probablemente usar el indicador global fue el problema, idk.
Decidí usar mi editor de texto y seguir un enfoque semi-manual en su lugar.
Copié una lista como esta (solo mucho más) de las dependencias de desarrollo de mi
package.jsonal editor de texto notepad ++:Establecí el modo de búsqueda en expresión regular, usé el
^\s*"([^"]+)".*$patrón para obtener el nombre del paquete y lo reemplacé pornpm uninstall \1 --save-dev \nnpm install \1 --save-dev. Haga clic en "reemplazar todo". El resultado fue este:Lo copié de nuevo a bash y presioné enter. Todo fue actualizado y funcionando bien. Eso es todo.
No creo que sea un gran problema, ya que debe hacerlo solo de vez en cuando, pero puede escribir fácilmente un script, que analiza
package.jsony actualiza sus paquetes. Creo que es mejor así, porque puedes editar tu lista si necesitas algo especial, por ejemplo, mantener la versión actual de una lib.fuente
--packageFile package.jsonmodo que sepa que no debe esperar el stdin.Resolví esto viendo las instrucciones de https://github.com/tjunnone/npm-check-updates
fuente
Encontré otra solución para la versión reciente de NPM. Lo que quiero hacer es reemplazar todas las dependencias "*" con el último número de versión explícito. Ninguno de los métodos discutidos me ha funcionado.
Lo que hice:
npm-check-updates -uTodo en package.json ahora se actualiza a la última versión.
fuente
Si no desea instalar npm-check-updates globales, simplemente puede ejecutar eso:
fuente
La alternativa es
Cada vez que utiliza la actualización npm, se actualiza automáticamente a la última versión. Para obtener más información sobre la sintaxis, puede consultar aquí: https://www.npmjs.org/doc/misc/semver.html
fuente
Solución sin paquetes adicionales.
Cambie la versión de cada dependencia a
*:Entonces corre
npm update --save.Algunos de sus paquetes fueron actualizados, pero otros no.
Esta es la parte difícil, significa que su versión local de "reaccionar" fue inferior a la más reciente. En este caso, npm descargó y actualizó el paquete "react". Sin embargo, su versión local de "react-google-maps" es la misma que la más nueva.
Si aún desea "actualizar" sin cambios
*, debe eliminar estos módulos de lanode_modulescarpeta.Por ejemplo, eliminar
node_modules/react-google-maps.Finalmente corre de nuevo
npm update --save.No olvide ejecutar
npm update --save-devsi desea actualizar las dependencias de desarrollo.fuente
Greenkeeper si estás usando Github. https://greenkeeper.io/
Es una integración de Github e increíblemente fácil de configurar. Cuando se instala, crea automáticamente solicitudes de extracción en los repositorios que especifique (o todos si lo desea) y mantiene su código siempre actualizado, sin obligarlo a hacer nada manualmente. Luego, los RP deben activar una compilación en un servicio de CI y, dependiendo de una verificación exitosa o fallida, puede seguir descubriendo qué está provocando el problema o cuando CI pasa, simplemente combine el RP.
En la parte inferior, puede ver que la primera compilación falló al principio y después de una confirmación ("actualizar a nodo v6.9") las pruebas pasan para que finalmente pueda fusionar el PR. También viene con muchos emoji.
Otra alternativa sería https://dependencyci.com/ , sin embargo, no lo probé intensamente. Después de un primer vistazo, Greenkeeper se ve mejor en general en la OMI y tiene una mejor integración.
fuente
Debería conseguirte las últimas versiones deseadas compatibles con tu aplicación. Pero no las últimas versiones.
fuente