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 version
y 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 --save
Respuestas:
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--save
aquí,*
se reemplaza con la versión actual de cada paquete.npm install --save
el comodín se deja en mipackage.json
.update
tampoco 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-updates
para instalar, luegonpm-check-updates
para verificar si sus dependencias tienen actualizaciones ynpm-check-updates -u
para actualizar sus versiones de package.json. Entonces es justonpm install
y descargará nuevas versiones.npm update --save
lugar de hacerlonpm update --save-dev
.npm-check-updates
es 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
npm
es: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-updates
onpm outdated
para 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.json
connpm shrinkwrap
Ahora,
npm install
ahora usaré versiones exactas ennpm-shrinkwrap.json
Si se registra
npm-shrinkwrap.json
en 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.json
ingresa 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 update
solo 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.json
y 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.json
para cosas así;)fuente
npm install react-native-image-picker@* --save
ncu 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.json
un proceso de un solo clic.Lente de versión
fuente
Esto funciona a partir de npm 1.3.15.
fuente
npm shrinkwrap
congelar 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 inestableslatest
como definición de versión para la última versión estableLatestStablePackages
Aquí 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_modules
antes denpm install
deshacerme 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.json
archivo 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-upgrade
en la raíz de su proyecto (al lado delpackage.json
archivo):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-upgrade
no funcionó para mí, pero lonpm upgrade
hizo y actualizó mi archivo package.json, que era exactamente lo que estaba buscando.npm-upgrade
es que puedes ver exactamente qué se está actualizando y elegir cuáles se actualizan.npm upgrade
puede 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 --save
fuente
('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
:
y presionarctrl+d
varias 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 outdated
salida como json, ajq
(jq es una herramienta de análisis / consulta de línea de comando json)
(observe el uso del
--depth
argumento 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-dev
comandoLo 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
devDependancies
usando--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
awk
lugar:npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-dev
cat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-dev
Si 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@latest
yactualizar
package.json
eliminar
/node_modules
ypackage-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-updates
fuente
Si usa hilo, el siguiente comando actualiza todos los paquetes a su última versión:
yarn upgrade --latest
De 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
npx
utilidad 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 install
para descargar realmente las nuevas dependencias. Así que supongo que esto sólo actualiza la package.json menos que me falta algonpm install
después de que se hayan actualizado las dependencias.Yo uso
npm-check
para lograr esto.Otra lista de comandos útil que mantendrá números de versión exactos en
package.json
fuente
ncu -u
y noncu -ua
en 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.json
paraNPM 3.10.10
:Antecedentes:
Estaba usando el último comando de @ josh3736 pero mi
package.json
no 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-updates
como se ve en el mensaje al escribirnpm-check-updates -u
:fuente
-a
es el comportamiento predeterminado, y sobrescribir el paquete.json se deja únicamente a la-u
opción.Si está utilizando
yarn
,yarn upgrade-interactive
es 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 shrinkwrap
comando.fuente
Intente seguir el comando si usa npm 5 y el nodo 8
npm update --save
fuente
update
comando no parece aumentar las dependencias más allá de la definición original. Sipackage.json
declara"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.json
al 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.json
y 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.json
modo 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 -u
Todo 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_modules
carpeta.Por ejemplo, eliminar
node_modules/react-google-maps
.Finalmente corre de nuevo
npm update --save
.No olvide ejecutar
npm update --save-dev
si 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