Original bug ticket: [https://npm.community/t/831](https://npm.community/t/831)
Originally filed: 2018-07-23T20:19:41.160Z
Я сталкиваюсь с этим в npm 6.13.0. pack
будет включать файлы, игнорируемые .gitignore
и / или .npmignore
если они указаны в files
. Это наиболее заметно, когда эти файлы находятся в каталоге, в который желательно включить другие файлы в этом каталоге.
Один обходной путь, который, кажется, работает для меня, - это добавить "!.DS_Store"
в качестве последней записи в массиве files
(порядок, кажется, имеет значение).
Я думаю, что вижу нечто подобное с npm 6.12.1: My .gitignore
указывает исключить npm-shrinkwrap.json
и каталог /build/
. package.json
явно перечисляет каталог build
в разделе files
. В рамках процедуры сборки я создаю npm-shrinkwrap.json
в корневом каталоге модуля, который затем копируется в каталог build
.
С npm 6.4.1, ~ 6.7, ~ 6.9, ~ 6.10, ~ 6.11 и 6.12.0 упакованный файл (из npm pack
) содержит только build/npm-shrinkwrap.json
, но с 6.12.1 и более поздними версиями он включает как build/npm-shrinkwrap.json
_, так и npm-shrinkwrap.json
.
(Сообщество сейчас недоступно / доступно только для чтения, если это не та проблема, я хотел бы извиниться!)
Мне кажется странным включать термоусадочный файл в любую часть опубликованного пакета, но в любом случае это будет иметь эффект только в корне - почему ваш процесс сборки помещает туда копию?
Это, конечно, хороший вопрос.
У меня он находится в каталоге build / как часть другого шага сборки, который берет каталог build / и создает образ контейнера докера. Идея заключалась в том, чтобы запустить npm test
т. Д. Один раз вне докера, а затем сделать так, чтобы файл с термоусадочной пленкой ускорил процесс докера (позволяя npm install
внутри докера забирать те же файлы). Тогда это также будет служить документацией о том, что было использовано для строительства. Процесс просто скопировал npm-shrinkwrap.json в каталог сборки.
Исправление для меня сейчас - использовать mv
вместо cp
чтобы поместить файл в каталог build/
.
РЕДАКТИРОВАТЬ: Исправление / Обход для меня работает, но я немного обеспокоен тем, что из-за этого изменения в поведении пакеты в реестрах могут непреднамеренно содержать файлы, которые они не должны содержать - я обнаружил это случайно из-за другой части моей системы, проверяющей наличие файлов npm-shrinkwrap.json
.
Самый полезный комментарий
Я сталкиваюсь с этим в npm 6.13.0.
pack
будет включать файлы, игнорируемые.gitignore
и / или.npmignore
если они указаны вfiles
. Это наиболее заметно, когда эти файлы находятся в каталоге, в который желательно включить другие файлы в этом каталоге.Один обходной путь, который, кажется, работает для меня, - это добавить
"!.DS_Store"
в качестве последней записи в массивеfiles
(порядок, кажется, имеет значение).