Включает ли NPM файлы, перечисленные в .gitignore?

У меня есть файл, который генерируется командой npm install (с помощью задачи preinstall). Я не хочу добавлять его в репозиторий git или в проект NPM.

Предположим, что имя файла foo.json, я добавил его в файл .gitignore как foo.json.

Достаточно ли этого, чтобы не загружать его в реестр NPM?

Я знаю, что могу добавить файл .npmignore, который обязательно проигнорирует файл, но я не добавлю его, если .gitignore уже делает это.

Ответ 1

Если в проекте есть файлы .npmignore и .gitignore, npm только будет использовать файл .npmignore.

Из документации:

Используйте файл .npmignore, чтобы уберечь вещи от вашей посылки. Если нет файла .npmignore, но есть файл .gitignore, то npm будет игнорировать материал, соответствующий файлу .gitignore. Если вы хотите включить что-то, что исключено вашим файлом .gitignore, вы можете создать пустой файл .npmignore для его переопределения.

Проще говоря, npm предпочитает файл .npmignore, если он там есть, но вернется к файлу .gitignore. Поэтому, если оба присутствуют, он будет использовать файл .npmignore.

Во многих случаях и Git, и npm могут игнорировать одни и те же файлы, поэтому имеет смысл просто использовать файл .gitignore самостоятельно. Если есть несоответствие (то есть npm и Git должны игнорировать разные файлы), вам нужно поддерживать отдельные файлы .gitignore и .npmignore.

Дополнительная информация о том, что помещать в файлы .npmignore: Должен ли я .npmignore свои тесты?

Ответ 2

Для тех, кто читает это, пытается игнорировать файл /dir из git, но хочет включить его в публикацию npm и попытался использовать пустой файл .npmignore без везения. Это работает.

В вашем файле .gitignore добавьте файл /dir, который вы хотите исключить **/build, например, и в свой файл .npmignore убедитесь, что вы указали один и тот же файл/каталог, но с префиксом !, поэтому для вы можете добавить !**/build