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