Es una buena pregunta. Hay pros y contras. Hablo del tema para que puedas hacer tu propia opinión.
¿Deberías enviar la carpeta node_modules a Git?
Menciono Git, pero lo mismo se aplica a cualquier sistema de control de versiones que utilices.
Es una buena pregunta. Hay pros y contras.
Sugiero que el valor predeterminado esnoConfirme la carpeta node_modules y, en su lugar, agréguela a su.gitignore
expediente.
Es posible que tenga necesidades especiales que reviertan esta decisión.
Hablo del tema para que puedas hacer tu propia opinión.
Aquí hay algunos argumentos a favor de no comprometer node_modules
Mantienes limpio tu historial de Git. Cuando agrega un nuevo paquete, almacena elpackage.json
ypackage-lock.json
cambios de archivo. Cuando decide actualizar la versión del paquete, todo lo que almacena es elpackage-lock.json
cambio de archivo.
package-lock.json
es una característica relativamente nueva de npm, que deja obsoleta laEnvoltura retráctilcomando usado en el pasado
Evita tener que poner posiblemente cientos de MB de dependencias en su repositorio, y esto significa que con el tiempo será más rápido trabajar con él. Cambiar de rama y verificar el código son 2 operaciones muy afectadas por el tamaño del repositorio.
Al trabajar con ramas, es posible que tenga conflictos de fusión que se extiendan más allá de su código y, en su lugar, involucren el código de dependencias. No es agradable lidiar con esto y puede hacer que pierda mucho tiempo. Evitando poner
Una solicitud de extracción o fusión si se cambian las dependencias, tendrá muchos más archivos involucrados en el proceso. Las herramientas se vuelven más lentas o incluso deciden no mostrar la diferencia completa (GitHub, por ejemplo)
Los módulos de nodos nativos deben recompilarse si implementa en una plataforma diferente a su máquina de desarrollo (caso de uso común: desarrolla en Mac, implementa en Linux). Necesitas llamarnpm rebuild
, lo que desincroniza el servidor.
No confirmar node_modules implica que debe enumerar todos sus módulos en elpackage.json
(ypackage-lock.json
) como paso obligatorio. Esto es genial porque es posible que no tenga la diligencia para hacerlo, y algunas de las operaciones de npm podrían fallar si no lo hace.
Sugerencia: no es necesario utilizar la versión específica en su
package.json
archivo, no más desde la introducción de lapackage-lock.json
expediente.
Si usa por separadodependencies
ydevDependencies
conjuntos, cometiendo elnode_modules
carpeta que básicamente está cometiendo eldevDependencies
y no hay una forma (fácil) de que la compilación de producción se deshaga de ellos.
Razones que pueden llevarlo a comprometer node_modules y cómo mitigarlos
Unnpm
su autor puede eliminar el paquete del registro npm. Pasó con los famososleft-pad
incident in 2016 (leer más). Esto es muy raro que suceda con paquetes populares. Si esto sucede, es posible que ya no tenga acceso a esa función en particular.
También podrías argumentar quenpm
no se garantiza que permanezca indefinidamente, podría desaparecer, por lo que una manera fácil de garantizar tener el código completo de su aplicación en el futuro es enviarlo junto con su aplicación.
Cada vez que use un paquete, cree una bifurcación en GitHub. De vez en cuando, manténgalo actualizado con el origen (se puede automatizar).
Esto no siempre es práctico, ya que los paquetes pueden tener docenas de sus propias dependencias.
Puede utilizar un servidor de repositorio privado para su proyecto y utilizarlo para alojar todas sus dependencias.
Las opciones incluyen
- sinopia
- npm_lazy
- npm-lazy-mirror
- artefacto
- npm Enterprise, de la empresa npm
Otra razón para confirmar las dependencias es la capacidad de editar rápidamente el código, si encuentra un error o si desea agregar algo a una biblioteca.
Esta es una espada de doble filo: si lo hace, perderá la capacidad de actualizar el paquete si se realizan nuevas versiones, y es bueno para arreglos temporales rápidos.
La solución óptima es enviar un PR que haga lo que quiere para el proyecto original o bifurcarlo y usar su bifurcación como dependencia.
Descarga mi gratisManual de Node.js
Más tutoriales de nodos:
- Una introducción al administrador de paquetes npm
- Introducción a Node.js
- Solicitudes HTTP usando Axios
- Dónde alojar una aplicación Node.js
- Interactuar con la API de Google Analytics usando Node.js
- El corredor de paquetes de nodo npx
- La guía package.json
- ¿Dónde instala npm los paquetes?
- Cómo actualizar Node.js
- Cómo usar o ejecutar un paquete instalado usando npm
- El archivo package-lock.json
- Control de versiones semántico usando npm
- ¿Deberías enviar la carpeta node_modules a Git?
- Actualice todas las dependencias de Node a su última versión
- Analizando JSON con Node.js
- Encuentre la versión instalada de un paquete npm
- Secuencias de Node.js
- Instale una versión anterior de un paquete npm
- Obtener la carpeta actual en el nodo
- Cómo registrar un objeto en Node
- Exponer la funcionalidad de un archivo de nodo mediante exportaciones
- Diferencias entre el nodo y el navegador
- Hacer una solicitud HTTP POST usando Node
- Obtener datos del cuerpo de la solicitud HTTP usando Node
- Búferes de nodo
- Una breve historia de Node.js
- Cómo instalar Node.js
- ¿Cuánto JavaScript necesita saber para usar Node?
- Cómo usar el REPL de Node.js
- Nodo, acepta argumentos de la línea de comando
- Salida a la línea de comando usando Node
- Acepte la entrada de la línea de comando en el nodo
- Desinstalación de paquetes npm con `npm uninstall`
- paquetes locales o globales de npm
- dependencias npm y devDependencies
- El ciclo de eventos de Node.js
- Entendiendo process.nextTick ()
- Entendiendo setImmediate ()
- El emisor de eventos de nodo
- Construye un servidor HTTP
- Realización de solicitudes HTTP con Node
- El módulo Node fs
- Solicitudes HTTP en Node usando Axios
- Leer archivos con Node
- Rutas de archivo de nodo
- Escribir archivos con Node
- Estadísticas de archivos de nodo
- Trabajar con descriptores de archivo en Node
- Trabajar con carpetas en Node
- El módulo de ruta de nodo
- El módulo http de nodo
- Usando WebSockets con Node.js
- Los conceptos básicos para trabajar con MySQL y Node
- Manejo de errores en Node.js
- La guía Pug
- Cómo leer variables de entorno de Node.js
- Cómo salir de un programa de Node.js
- El módulo Node os
- El módulo de eventos de nodo
- Nodo, la diferencia entre desarrollo y producción
- Cómo comprobar si existe un archivo en Node.js
- Cómo crear un archivo vacío en Node.js
- Cómo eliminar un archivo con Node.js
- Cómo obtener la última fecha de actualización de un archivo usando Node.js
- Cómo determinar si una fecha es hoy en JavaScript
- Cómo escribir un objeto JSON en un archivo en Node.js
- ¿Por qué debería usar Node.js en su próximo proyecto?
- Ejecute un servidor web desde cualquier carpeta
- Cómo usar MongoDB con Node.js
- Utilice Chrome DevTools para depurar una aplicación Node.js
- ¿Qué es pnpm?
- La lista de opciones de Node.js Runtime v8
- Cómo corregir el error "Falta acceso de escritura" al usar npm
- Cómo habilitar los módulos ES en Node.js
- Cómo generar un proceso hijo con Node.js
- Cómo obtener tanto el cuerpo analizado como el cuerpo crudo en Express
- Cómo manejar la carga de archivos en Node.js
- ¿Qué son las dependencias entre pares en un módulo de nodo?
- Cómo escribir un archivo CSV con Node.js
- Cómo leer un archivo CSV con Node.js
- Los módulos principales del nodo
- Incrementar varios números de carpetas a la vez usando Node.js
- Cómo imprimir un lienzo en una URL de datos
- Cómo crear y guardar una imagen con Node.js y Canvas
- Cómo descargar una imagen usando Node.js
- Cómo cambiar el nombre de archivos en masa en Node.js
- Cómo obtener los nombres de todos los archivos en una carpeta en Node
- Cómo usar promesas y esperar con las funciones basadas en devolución de llamada de Node.js
- Cómo probar un paquete npm localmente
- Cómo verificar la versión actual de Node.js en tiempo de ejecución
- Cómo utilizar Sequelize para interactuar con PostgreSQL
- Sirve una página HTML con Node.js
- Cómo resolver el error `util.pump is not a function` en Node.js