Что именно мне нужно положить в .npmignore
?
Тесты? Такие вещи, как .travis.yml
, .jshintrc
? Все, что не требуется при запуске модуля (кроме readme)?
Я не могу найти никаких рекомендаций по этому поводу.
Что именно мне нужно положить в .npmignore
?
Тесты? Такие вещи, как .travis.yml
, .jshintrc
? Все, что не требуется при запуске модуля (кроме readme)?
Я не могу найти никаких рекомендаций по этому поводу.
Как вы, вероятно, обнаружили, 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 лучше встроит функциональность, чем в застревание людей с нерелевантными объектами в их пакете.
Я согласен с коротком и синтаксическим ответом lante и Ответ большого ответа SamT:
Мой вклад в эти ответы:
. npmignore - это способ черного списка для выбора пакета файлов. Но более практичным способом вы можете белый список файлов, которые необходимо включить в свой пакет используя поле файлов в вашем package.json:
{
"files": [
"lib/",
"index.js"
]
}
Я думаю, что это простое, будущее доказательство и лучшая семантика;)
Чтобы уточнить, в любое время кто-то npm install your-library
, npm загрузит все исходные файлы, которые включает репо, кроме файлов, которые вы добавляете в свой .npmignore
.
Знайте, что людям, устанавливающим вашу библиотеку, потребуется только ваша библиотека, что-то еще не нужно.
Например, когда кто-то устанавливает библиотеку, возможно, что он/она не заботится о ваших файлах .travis.yml
или ваших .jshintrc
или даже некоторых изображениях, файлах Grunt, документации и т.д.
.npmignore
может позволить вашему пакету npm иметь меньше файлов и быстрее загружаться
Не включайте ваши тесты. Часто тесты примерно в 5 раз больше фактической базы кода. Пока ваши тесты на Github и т.д., Этого достаточно.
Но то, что вы обязательно должны сделать, это протестировать ваш пакет NPM в опубликованном формате. Создайте некоторые тесты дыма, которые находятся в фактической базе кода, но не являются частью набора тестов.
Вы можете прочитать о тестировании вашего пакета после его архивирования, здесь: https://github.com/ORESoftware/r2g
Как проверить результат "npm publish", не публикуя его в NPM?