¿Cuál es el propósito de la carpeta 'node_modules'?

Resuelto izaac mendes asked hace 4 años • 0 respuestas

¿Qué es exactamente la carpeta node_modules y para qué sirve?

Sé que cuando descargamos cualquier biblioteca npm, la biblioteca va a la carpeta node_modules . También sé que, cuando lo vamos a subir (a GitHub, por ejemplo) tenemos que ignorar la carpeta node_modules , porque ocupa mucho espacio. A través del archivo package.json podemos descargar todas las dependencias usando npm i.

Digamos que quiero implementar mi aplicación/sitio web en algún servidor/host, ¿tengo que cargar la node_modulescarpeta en el servidor también?

Y otra cosa. Por lo general, descargo mis archivos jQuery y Bootstrap del sitio web y copio el contenido en la carpeta css/js dentro de mi proyecto, pero esta vez probé con npm y todo va a la carpeta node_modules y estoy usando Cordova . Cuando ejecuto el comando cordova build, no se generan ni mis archivos jQuery ni mis archivos Bootstrap.

Entonces esas son mis preguntas:

  • Si quiero alojar mi proyecto, ¿realmente tengo que cargar también la carpeta node_modules ?
  • Y cuando es Cordova o Ionic , ¿también tengo que copiar la carpeta node_modules a la carpeta www ?
  • Si es así, ¿cuál es el punto de utilizar npm para descargar bibliotecas? ¿Es así como se hace realmente? ¿Cuál es mejor? ¿Ir al sitio web, descargar el archivo y pegarlo dentro de www o descargarlo a través de npm?
izaac mendes avatar Aug 07 '20 09:08 izaac mendes
Aceptado

¿Cuál es el propósito de la carpeta node_modules?

Puede pensar en la carpeta node_modules como un caché para los módulos externos de los que depende su proyecto. Cuando npm installlos descarga, se descargan de la web y se copian en la carpeta node_modules y Node.js está capacitado para buscarlos allí cuando los importa (sin una ruta específica). Me refiero a esto como caché porque la carpeta node_modules se puede recrear completamente desde cero en cualquier momento simplemente reinstalando todos los módulos dependientes (que deberían aparecer en las carpetas de su proyecto).

pero sé que cuando lo vamos a subir a github tenemos que ignorar la carpeta node_modules porque ocupa mucho espacio.

Esto se debe a que no hay razón para almacenar copias de todos sus módulos dependientes en su propio proyecto GitHub. La versión exacta que estaba usando se conoce y se almacena en su package.jsono package-lock.jsonen cualquier momento, usted o cualquier otra persona que use su proyecto puede descargar su código y luego recuperar todos los demás módulos dependientes de su fuente original (incluidas incluso las mismas versiones exactas que estaba usando). ). Por lo tanto, no hay ninguna razón para almacenar una copia duplicada separada de todos esos módulos dependientes en su propio proyecto. Eso sería un desperdicio y complicaría la actualización a una versión más nueva de todos esos módulos dependientes.

Esa es mi pregunta: si quiero alojar mi proyecto, ¿realmente tengo que cargar también los node_modules?

Si tiene su proyecto ejecutándose en su máquina local y ahora desea moverlo a su ubicación de alojamiento, es mejor reinstalar todos los módulos dependientes en la máquina de alojamiento y no copiarlos desde su máquina de desarrollo. Esto se debe a que el proceso de instalación en la máquina de alojamiento (que podría ser una plataforma o sistema operativo diferente al de su máquina de desarrollo) puede utilizar un proceso de instalación un poco diferente para el entorno de alojamiento específico.

jfriend00 avatar Aug 07 '2020 03:08 jfriend00

What exactly is the node_modules folder and what is it for?

Es solo un directorio creado npmy una forma de rastrear cada paquete que instala localmente a través de package.json. Si hubiera intentado eliminar la carpeta node_module y hubiera ejecutado la aplicación, obtendría Error:Cannot find module 'some-module/methods'. Básicamente, eso significa que su máquina se quejará de que está utilizando algún módulo, pero no puede localizarlo.

Y personalmente, no recomendaría editar directamente la node_modulescarpeta si vas a explorar sus funcionalidades. Lo ideal sería bifurcar el repositorio para editarlo, compilarlo y ejecutarlo antes de devolverlo a su repositorio. Por lo general, editar el archivo node_modulespuede sobrescribir todos los cambios cuando npm installse usa y, como resultado, nadie podrá clonar su repositorio ya que no puede agregarlo node_modulesa github.

. . .

Digamos que quiero implementar mi aplicación/sitio web en algún servidor/host, ¿tengo que cargar la carpeta node_modules en el servidor también?

Le recomendamos encarecidamente que evite cargar la node_modulescarpeta al servidor manualmente. Hacer esto puede eliminar las dependencias de su versión. Para reiterar mi punto, node_moduleses solo un directorio externo que se crea npm installfácilmente. Si va a implementar su aplicación en otro servidor, están node_modulesfácilmente disponibles para instalarlas por separado. Así que mueva todos sus archivos excepto la node_modulescarpeta al servidor y ejecútelo npm installantes de ejecutar la aplicación.

Philip Joseph avatar Feb 18 '2022 10:02 Philip Joseph