Должен ли я npmignore мои тесты?



что именно я должен поставить в .npmignore?



тесты? Такие вещи, как .travis.yml,.jshintrc? Все, что не требуется при запуске модуля (кроме readme)?



Я не могу найти никаких указаний на этот счет.

586   4  

4 ответов:

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

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

Примечание: By производства я имею в виду любое время, когда ваш модуль используется кем-то и не развивается на самом модуле.


предварительно выпущенные кросс-скомпилированные источники

  • плюсы: если вы используете язык, кросс-компилируется в JavaScript, вы можете предварительно скомпилировать перед выпуском и не включать .coffee файлы в вашем пакете, но продолжайте отслеживать их в своем репозитории git.

построить файл остатки

  • плюсы: люди используют такие вещи, как node-gyp могут иметь объектные файлы, которые генерируются во время сборки, которые никогда не должны входить в пакет.
  • минусы: это всегда должно идти в .gitignore в любом случае. Вы должны разместить эти вещи внутри здесь, Если вы используете .npmignore файл уже как он переопределяет .gitignore с точки зрения НПМ.

тесты

  • плюсы: меньше багажа в рабочий код.
  • минусы: вы не можете запускать тесты в динамических средах с малой вероятностью возникновения системного сбоя, такого как устаревшая версия запущенного узла, которая вызывает сбой теста.

непрерывная интеграция настройки / мета файлы

  • плюсы: опять же, меньше багажа. Такие вещи, как .travis.yml не требуется для использования, тестирования или просмотра кода.

нечитаемые документы и примеры кода

  • плюсы: меньше багажа. Некоторые люди существуют в школе мысли, где, если вы не можете выразить хотя бы минимальную жизнеспособную функциональность в своем Readme, ваш модуль тоже большой.
  • минусы: люди не могут видеть исчерпывающую документацию и примеры кода в своей собственной файловой системе. Они должны были бы посетить хранилище (которое также требует подключения к интернету).

объекты Github-pages

  • плюсы: вы, конечно, не нужно засорять свои релизы с CNAME файлы или заполнитель index.htmlS, Если вы используете ваш модуль служит двойной долг -gh-pages репозитория что ж.

Бауэр.json и друзья

  • плюсы: если вы решили построить свои зависимости до выпуска, вам не нужно, чтобы конечный пользователь устанавливал bower, а затем устанавливал больше вещей с этим. Я бы лично хранил эти вещи в пакете. Когда я делаю npm install, Я должен полагаться только на npm и никаких других внешних источников.

в принципе, вы должны когда-нибудь использовать его, если есть что-то, что вы хотите для того чтобы держать вне вашей НПМ пакет, но не из вашей НПМ репозитория. Это не длинный список элементов, но npm скорее построит функциональность, чем люди застряли с нерелевантными объектами в своем пакете.

Я согласен с короткий и синтетический ответ Ланте и Самт-х:

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

мой вклад в эти ответы:

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

{
  "files": [
    "lib/",
    "index.js"
  ]
}

Я думаю, что это проще, будущее доказательство и имеют лучшую семантику;)

просто чтобы уточнить, в любое время кто-то делает npm install your-library,npm будут загружены все исходные файлы, которые включает РЕПО, за исключением файлов, которые вы включаете в свой .npmignore.

знайте, что люди, устанавливающие вашу библиотеку, будут нуждаться только в вашей библиотеке, ничего больше не понадобится.

например, когда кто-то устанавливает библиотеку, его, вероятно, что он/она не заботится о своем .travis.yml или .jshintrc файлы, или даже некоторые изображения, ворчать файлы, документации и т. д.

.npmignore может позволить вашему пакету npm иметь меньше файлов и быстрее загружаться

Не включайте свои тесты. Часто тесты похожи на 5x размер фактической кодовой базы. Пока ваши тесты Github и т. д., Это достаточно хорошо.

но то, что вы абсолютно должны сделать, это проверить свой пакет NPM в опубликованном формате. Создайте несколько тестов smoke, которые находятся в фактической кодовой базе, но не являются частью набора тестов.

вы можете прочитать о тестировании вашего пакета после его тарбалинга, здесь: https://github.com/ORESoftware/r2g

Как проверить результат "npm publish", фактически не публикуя его в NPM?

Comments

    Ничего не найдено.