Я начинаю контекстуализировать. В этот репозиторий GitHub, который я сделал , загружен только один файл, файл package.json
, который я вытащил из шаблона пользовательского веб-приложения, который я использую. Это приложение использует различные инструменты и фреймворки, включая AngularJS, Bootstrap 3, SASS и т. д., а также использует Grunt в качестве автоматизатора.
Два важных аспекта для этого сценария, которые я предлагаю, заключаются в следующем:
NPM используется как менеджер пакетов.
В репозитории нет файла
.gitignore
, т.е. нет файла, чтобы указать, какие файлы/папки должны игнорироваться Git . Это важно для того, что будет позже.
Содержимое файла package.json
, как оно появляется в репозитории , выглядит следующим образом:
{
"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"
}
}
Как только репозиторий клонирован, в Visual Studio Code (это редактор, который я использую) я открываю терминал, а затем запускаю npm install
установку зависимостей.
Когда установка зависимостей завершена и генерация папки node_modules
меня поражает, что от расширения VSC Git (которое я установил) я получаю следующее уведомление (я помещаю его в изображение и текст):
Репозиторий git в «[локальная папка, в которой у меня есть локальная копия моего репозитория]» содержит слишком много активных изменений, будет включено только подмножество функций Git. Хотите добавить «node_modules» в .gitignore?
Это относится к объему активных изменений, которые имели место, и, следовательно, предполагает, хочу ли я включить папку node_modules
в файл .gitignore
, который до сих пор не был создан.
Учитывая объем описанных изменений для GIT, и вес на винчестере, который подразумевают установленные зависимости, хочу спросить:
- Должен ли я или не должен включать папку
node_modules
в папки, которые Git должен игнорировать? - Помимо аспектов объема и веса, каковы преимущества и недостатки выполнения или не выполнения этого?
Ответ прост: НЕТ .
Файл
node_modules
пересоздается при выполненииnpm install
, поэтому вам нужно только проверить файл с инструкциями по его пересборке, то есть файлpackages.json
.В общем, ни результаты сборки, ни модули, входящие в состав зависимостей, не проверяются при наличии менеджера пакетов для проекта, проверяется только файл, в котором указаны эти зависимости .
То же самое касается Python и
pip
, Ruby и RubyGems, Go, Haskell иcabal
т.д.