Что именно я должен указать в .npmignore
?
Тесты? Такие вещи, как .travis.yml
, .jshintrc
? Что-нибудь, что не нужно при запуске модуля (кроме ридми)?
Я не могу найти никакого руководства по этому поводу.
Что именно я должен указать в .npmignore
?
Тесты? Такие вещи, как .travis.yml
, .jshintrc
? Что-нибудь, что не нужно при запуске модуля (кроме ридми)?
Я не могу найти никакого руководства по этому поводу.
Как вы, вероятно, заметили, NPM на самом деле не указывает конкретно, что там должно быть, скорее у них есть список игнорируемых по умолчанию файлов. Многие люди даже не используют его, поскольку все в вашем .gitignore
по умолчанию игнорируется в npm
, если .npmignore
не существует. Кроме того, многие файлы уже игнорируются по умолчанию независимо от настроек, а некоторые файлы всегда исключаются из игнорирования, как указано в приведенной выше ссылке.
Официально не так много информации о том, что всегда должно быть там, потому что это в основном подмножество .gitignore
, но из того, что я понял из использования узла в течение 5 лет, вот что я придумал.
Примечание. Под производством я подразумеваю любое время, когда ваш модуль используется кем-то, а не для разработки самого модуля.
.coffee
файлов в свой пакет, но продолжать отслеживать их в своем репозитории git.node-gyp
, могут иметь объектные файлы, созданные во время сборки, которые никогда не должны быть включены в пакет..gitignore
. Вы должны разместить эти вещи здесь, если вы уже используете файл .npmignore
, так как он переопределяет .gitignore
с точки зрения npm..travis.yml
, не требуются для использования, тестирования или просмотра кода.CNAME
файлами или заполнителями index.html
, если вы используете свой модуль в качестве gh-pages
репозитория.npm install
, я должен полагаться только на npm и никакие другие внешние источники.По сути, вы всегда должны использовать его, если есть что-то, что вы хотите убрать из своего пакета npm, но не из своего репозитория npm. Это не длинный список элементов, но npm скорее встроит функциональность, чем заставит людей зацикливаться на ненужных объектах в своем пакете.
Я согласен с кратким и синтетическим ответом Ланте и Большой ответ SamT:
Мой вклад в эти ответы:
.npmignore входит в черный список< /strong> способ добиться выбора файла пакета. Но более практичным способом является белый список файлов, которые необходимо включить в пакет используя поле файлов в вашем package.json:
{
"files": [
"lib/",
"index.js"
]
}
Я думаю, что это проще, перспективнее и имеет лучшую семантику;)
npm test
по всем node_modules может дать вам подсказку, работает ли что-то по-другому в определенной среде.
- person adelriosantiago; 06.12.2017
.npmignore
. Один недостаток, однако, заключается в том, что вы не можете игнорировать файлы, подпадающие под действие "files"
на .npmignore
. Некоторым людям нравится размещать тесты рядом с исходниками, поэтому, если ваши .test.js
ниже lib/
, вы не можете не упаковать их.
- person Nicolás Fantone; 25.01.2018
.npmignore
. files: ["lib", "!lib/**/*.test.js"]
. :)
- person Sureshraj; 30.12.2019
npm
будет игнорировать .npmignore
в каталоге верхнего уровня, а это означает, что вам нужно будет поместить его в каждый тестовый подкаталог, если они находятся рядом с исходным кодом.
- person Brad Frost; 24.09.2020
"files"
и использовать .npmignore
для внесения в черный список всех файлов с помощью *
и после этого добавить явные записи в белый список, например !index.js
и !lib/**/!(*.test).js
.
- person Nicolás Fantone; 15.01.2021
npm pack
. Придется проверить, почему я не смог заставить его работать на меня. В любом случае, я удалю свой предыдущий комментарий, чтобы через несколько дней он не смущал других. Спасибо!
- person Nicolás Fantone; 18.01.2021
Просто чтобы уточнить, каждый раз, когда кто-то делает npm install your-library
, npm загружает все исходные файлы, которые включены в репозиторий, за исключением файлов, которые вы включаете в свой .npmignore
.
Знайте, что людям, устанавливающим вашу библиотеку, нужно будет просто запустить вашу библиотеку, ничего больше не понадобится.
Например, когда кто-то устанавливает библиотеку, вероятно, ему/ей нет дела до ваших файлов .travis.yml
или .jshintrc
, или даже до каких-то изображений, файлов Grunt, документации и т. д.
.npmignore
может позволить вашему пакету npm иметь меньше файлов и быстрее загружаться
.npmignore
не влияет напрямую на то, что загружается, оно влияет на то, что входит в ваш пакет, когда вы публикуете npm и загружаете. Это косвенно создает файлы меньшего размера для загрузки.
- person Mark Stosberg; 22.06.2018
Не включайте свои тесты. Часто тесты примерно в 5 раз превышают размер фактической кодовой базы. Пока ваши тесты находятся на Github и т. д., этого достаточно.
Но вам абсолютно необходимо протестировать пакет NPM в его опубликованном формате. Создайте несколько дымовых тестов, которые находятся в фактической кодовой базе, но не являются частью набора тестов.
Вы можете прочитать о тестировании вашего пакета после его архивирования здесь: https://github.com/ORESoftware/r2g а>
Как протестировать `публикацию npm` результат без фактической публикации в NPM?
npm install yourlibrary
, например.travis.yml
и.jshintrc
- person lante   schedule 04.08.2014.npmignore
или"files"
(docs.npmjs.com/files/package. json#файлы). - person Nicolás Fantone   schedule 25.01.2018