Pull to refresh

Comments 8

Унес в закладки, спасибо! Удивляет реакция аудитории — видимо в шоке от возвращения мегамозга. Статья реально полезная, даже если для кого то и покажется очевидой.
Читателей этой блогозаписи хочется лишний раз предупредить, что файл .npmignore используется утилитою npm не как дополнение к .gitignore, а как замена. Так что создавать .npmignore лучше всего копированием .gitignore с последующим доредактированием, а не то можно обнаружить в пакете много лишнего.

Гораздо удобнее использовать поле files в package.json. Это white list того, что должно быть в пакете. Случайные залетные файлы туда не смогут попасть просто потому что вы забыли их внести в black list в .npmignore.

Мне психологически проще работать в таких обстоятельствах, когда приходится заносить ненужные файлы в black list, а не в таких обстоятельствах, когда приходится заносить нужные файлы в white list.

Почему проще?

Потому, что так меньше цена возможной ошибки.

Ведь если я позабуду занести ненужный файл в black list, то пакет всего лишь напрасно распухнет в объёме; но если я позабуду занести нужный файл в white list, то пакет вообще не будет корректно работать.

Именно, но к сожалению, уж очень много модулей в npm страдают этой болезнью. Мы например, релизим модули скриптом через отдельный бранч. Грубо говоря — создаём ветку release; удаляем из git-индекса всё; генерируем .gitignore с *(ignore all), там же добавляем исключения для релизных файлов, часто это лишь lib/**, readme.md, package.json, bower.json; дибавляем всё в гит; пушим в ветку release; создаем тэг. Таким образом у нас и npm чист, и bower пакет чист, а также все git releases.


Вот перечень команд:
[
    `npm run bump`,
    `git commit -a -m "v${version}"`,
    `git push origin master`,

    `git checkout -B release`,
    `npm run build`,
    `npm run ignorefiles`,
    `npm publish`,  
    `git rm -r --cached .`,
    `git add -A`,
    `git commit -a -m "v${version}"`,
    `git push origin release -ff`,
    `git tag v${version}`,
    `git push --tags`,
    `git checkout master -ff`
]
UFO just landed and posted this here
Совсем недавно негодовал по этому поводу. Данную статью нужно читать всем кто хоть как-то связан с npm/node, а еще было-бы хорош видеть её на англ. языке.
Sign up to leave a comment.