¿Debo, o no, incluir la carpeta node_modules dentro de las carpetas que GIT debe ignorar?

publicado por: Anonymous

Parto contextualizando. Este repositorio de GitHub que hice, tiene solamente un archivo subido a él, un archivo package.json, que lo saqué de una plantilla propia de aplicación web que uso. Esa aplicación usa diversas herramientas y frameworks, entre ellas AngularJS, Bootstrap 3, SASS, etc., y usa Grunt como automatizador.

Los dos aspectos relevantes para este escenario que planteo, son que:

  1. Se usa NPM como gestor de paquetes.

  2. En el repositorio no hay un archivo .gitignore, es decir, no hay archivo para especificar qué archivos/carpetas son los que GIT debe ignorar. Es crucial para lo que viene más adelante.

El contenido del archivo package.json, como aparece en el repositorio, es el siguiente:

{
  "name": "miproyecto",
  "version": "1.0.0",
  "description": "",
  "main": "Gruntfile.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "grunt": "^1.0.4",
    "grunt-angular-templates": "^1.2.0",
    "grunt-contrib-connect": "^2.1.0",
    "grunt-contrib-copy": "^1.0.0",
    "grunt-contrib-cssmin": "^3.0.0",
    "grunt-contrib-htmlmin": "^3.1.0",
    "grunt-contrib-jshint": "^2.1.0",
    "grunt-contrib-sass": "^1.0.0",
    "grunt-contrib-uglify": "^4.0.1",
    "grunt-contrib-watch": "^1.1.0",
    "grunt-htmlhint": "^0.9.13",
    "grunt-stylelint": "^0.12.0",
    "load-grunt-tasks": "^5.1.0",
    "stylelint": "^11.1.1"
  },
  "dependencies": {
    "@fortawesome/fontawesome-free": "^5.10.2",
    "@uirouter/angularjs": "^1.0.22",
    "angular": "^1.7.8",
    "angular-animate": "^1.7.8",
    "bootstrap": "^3.3.6",
    "jquery": "^3.4.1"
  }
}

Una vez clonado el repositorio, en Visual Studio Code (que es el editor que uso), abro una terminal, y luego ejecuto npm install para instalar las dependencias.

Cuando termina la instalación de las dependencias, y la generación de la carpeta node_modules, me llama la atención que, desde la extensión de Git de VSC (que la tengo instalada), me sale la siguiente notificación (la pongo en imagen y en texto):

The git repository at ‘[carpeta local donde tengo la copia en local de mi repositorio]’ has too many active changes, only a subset of Git features will be enabled. Would you like to add ‘node_modules’ to .gitignore?

introducir la descripción de la imagen aquí

Que hace referencia al volumen de cambios activos que estaban ocurriendo, y por ello me sugiere si quiero incluir la carpeta node_modules en un archivo .gitignore, que hasta este momento, no lo tenía creado.

Considerando el volumen de cambios descrito para GIT, y el peso en disco duro que implican las dependencias instaladas, es que quiero preguntar:

  1. ¿Debo, o no, incluir la carpeta node_modules, dentro de las carpetas que GIT debe ignorar?
  2. Fuera de los aspectos de volúmen y peso, ¿Qué ventajas y desventajas se me presentan al hacerlo, o al no hacerlo?

solución

La respuesta es simple: NO.

El archivo node_modules se reconstruye al ejecutar npm install, por lo tanto, solo debes controlar el archivo con las instrucciones para reconstruirlo, esto es, el archivo packages.json.

En general, no se controlan ni los resultados de la compilación ni los módulos que forman parte de las dependencias cuando existe un gestor de paquetes para el proyecto, solo se controla el archivo que indica estas dependencias.

Lo mismo pasa con Python y pip, Ruby y RubyGems, Go, Haskell y cabal, etc.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *