Npm publish не включает все мои файлы

I npm publish 'd модуль. Он прошел нормально, но затем, когда я установил его из реестра, оказалось, что некоторые файлы отсутствуют.

Когда я запускаю irish-pub в моей директории проекта модуля, достаточно уверен, вывод не отображает эти имена файлов.

Я проверил:

  • У меня нет файла .npmignore.
  • У меня есть .gitignore, но в нем содержится только /node_modules/
  • недостающие файлы - это обычные файлы JS, а не те, которые могут быть проигнорированы по умолчанию

Что еще может блокировать их?

Ответ 1

Проблема заключалась в том, что у меня был массив files в package.json. Если это присутствует, тогда публикуются только указанные файлы, а все остальное эффективно npmignored.

https://docs.npmjs.com/files/package.json

Ответ 2

Для тех, кто не отвечает вышеуказанным ответам, npm pack и публикуйте уважаемые файлы package.json, которые есть в дереве каталогов, а не только в корне.

В моем случае у меня был модуль, который шаблонизировал другой модуль с помощью ejs, но поскольку npm рассматривал дочерний package.json как реальный, он считывал files оттуда и не связывал все необходимое.

Ищите files в любом пакете .json, а не только в своем корне.

Ответ 3

У меня также было свойство "files" в package.json(намеренно), но использовалось относительное обращение к списку файлов и каталогов, начинающихся с косой черты ( "./" ), но ни npm pack, ни npm publish работал с этим. удалили все, все работало как ожидалось!

так измените:

"files": [ "./bin", "./lib" ]

в

"files": [ "bin", "lib" ]

и запустите:

$ npm pack

проверить gnu zipped tarfile и finaly:

$ npm publish <projectname>-<semver>.tgz

Ответ 4

Я столкнулся с той же проблемой и нашел ответ здесь.

Вам нужно указать путь к каталогу (или архиву), который вы пытаетесь опубликовать. Хотя документация на npmjs.org на самом деле не указывает на это, если вы запустите npm help publish, вы получите справочную страницу, которая показывает, что правильное использование на самом деле

npm publish <tarball> [--tag <tag>] npm publish <folder> [--tag <tag>]

Я также обнаружил, что должен был на самом деле ввести путь: я не мог просто использовать npm publish . из каталога, содержащего мой файл package.json.

Надеюсь, что это поможет.

Ответ 5

В других решениях не упоминается, что существует недокументированный гоночный приоритет. Например, у меня в "files": ["lib"] package.json были "files": ["lib"]. lib это мой гитиньор только с этим состоянием это работает. тем не менее, был также lib/path/.gitignore, который превзошел мой массив files, в результате чего папка lib не была включена.

урок - обратите внимание на вложенные файлы .gitignore

Ответ 6

Для меня наличие файла .gitignore с перечисленными в нем файлами внутри папки пакета, которое должно быть опубликовано, вызывало проблемы.

В общем,

"All files in the package directory are included if no local .gitignore or 
 .npmignore file exists. If both files exist and a file is ignored by .gitignore 
 but not by .npmignore then it will be included."