Що саме я повинен вкласти .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 - спосіб чорного списку для вибору файлу пакета. Але більш практичним чином ви можете додати в білий список файли, які потрібно включити у свій пакет, за допомогою поля файлів у файлі package.json:
{
"files": [
"lib/",
"index.js"
]
}
Я думаю, що це простіше, майбутнє підтвердження і має кращу семантику;)
npm test
всіх модулів node_ може дати вам підказку, якщо в певному середовищі щось працює по-іншому.
.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 публікації`, фактично не публікуючи в NPM?
npm install yourlibrary
, наприклад.travis.yml
і.jshintrc