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