Чи ігнорує NPM файли, перелічені в .gitignore?


80

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

Припустимо, що ім'я файлу таке foo.json, я додав його у .gitignoreфайл як foo.json.

Чи цього достатньо, щоб уникнути завантаження його до реєстру NPM?

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

Відповіді:


131

Якщо проект має як .npmignoreі .gitignoreфайл, НПМ буде тільки використовувати .npmignoreфайл.

З документації :

Використовуйте .npmignoreфайл, щоб уникнути речі поза пакунком. Якщо немає .npmignoreфайлу, але це.gitignore файл, то НПМ буде ігнорувати матеріал , узгоджений в .gitignoreфайлі. Якщо ви хочете включити щось, що виключено вашим .gitignoreфайлом, ви можете створити порожній .npmignoreфайл, щоб замінити його.

Простіше кажучи, НПМ воліє в .npmignoreфайл , якщо він є, але буде падати назад в .gitignoreфайл.

У багатьох випадках і Git, і npm можуть ігнорувати однакові файли, тому має сенс просто використовувати .gitignoreфайл самостійно. Якщо коли-небудь виникає розбіжність (тобто npm та Git повинні ігнорувати різні файли), то вам потрібно підтримувати окремі файли .gitignoreта .npmignoreфайли.

Додаткова інформація про те, що розміщувати у .npmignoreфайлах: Чи слід мені .npmignore мої тести?


1
У нього інша ситуація, але цілком схожа, у мене є така, .gitignoreщо виключає bin/папку, куди переходить мій перекомпільований додаток ES6, тому я можу натиснути lib/, написаний додаток ES6. Але, як ви можете зрозуміти, проблема полягає в тому, що опублікований пакет у npm повинен матиbin/
Carlos Araya

3
Здається, вам потрібен .npmignoreфайл, що містить той самий вміст, що .gitignoreй у bin/видаленому рядку.
cmbuckley

Я хочу повної протилежності. Я хочу, щоб npm додав папку, незважаючи на те, що вона присутня в .gitignore
Lajos

@LajosMeszaros друге речення охоплює таке: "Якщо ви хочете включити щось, що виключено вашим .gitignoreфайлом, ви можете створити порожній .npmignoreфайл, щоб замінити його". У вашому випадку вам потрібно буде скопіювати .gitignoreв .npmignoreі видалити папку з .npmignoreтільки.
cmbuckley

19

Для тих, хто читає це, намагається ігнорувати файл / директорію з git, але бажає включити його в npm публікацію та спробував використовувати .npmignore файл без удачі. Це працює.

У свій .gitignoreфайл додайте файл / каталог, який ви хочете виключити, **/buildнаприклад, і у своєму .npmignoreфайлі переконайтеся, що ви вказали той самий файл / каталог, але з !префіксом, тому для прикладу збірки, який ви б включили!**/build

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.