Ответ 1
Проблема заключалась в том, что у меня был массив files
в package.json. Если это присутствует, тогда публикуются только указанные файлы, а все остальное эффективно npmignored.
I npm publish
'd модуль. Он прошел нормально, но затем, когда я установил его из реестра, оказалось, что некоторые файлы отсутствуют.
Когда я запускаю irish-pub в моей директории проекта модуля, достаточно уверен, вывод не отображает эти имена файлов.
Я проверил:
.npmignore
..gitignore
, но в нем содержится только /node_modules/
Что еще может блокировать их?
Проблема заключалась в том, что у меня был массив files
в package.json. Если это присутствует, тогда публикуются только указанные файлы, а все остальное эффективно npmignored.
Для тех, кто не отвечает вышеуказанным ответам, npm pack и публикуйте уважаемые файлы package.json, которые есть в дереве каталогов, а не только в корне.
В моем случае у меня был модуль, который шаблонизировал другой модуль с помощью ejs, но поскольку npm рассматривал дочерний package.json как реальный, он считывал files
оттуда и не связывал все необходимое.
Ищите files
в любом пакете .json, а не только в своем корне.
У меня также было свойство "files" в package.json(намеренно), но использовалось относительное обращение к списку файлов и каталогов, начинающихся с косой черты ( "./" ), но ни npm pack
, ни npm publish
работал с этим. удалили все, все работало как ожидалось!
так измените:
"files": [ "./bin", "./lib" ]
в
"files": [ "bin", "lib" ]
и запустите:
$ npm pack
проверить gnu zipped tarfile и finaly:
$ npm publish <projectname>-<semver>.tgz
Я столкнулся с той же проблемой и нашел ответ здесь.
Вам нужно указать путь к каталогу (или архиву), который вы пытаетесь опубликовать. Хотя документация на npmjs.org на самом деле не указывает на это, если вы запустите npm help publish
, вы получите справочную страницу, которая показывает, что правильное использование на самом деле
npm publish <tarball> [--tag <tag>]
npm publish <folder> [--tag <tag>]
Я также обнаружил, что должен был на самом деле ввести путь: я не мог просто использовать npm publish .
из каталога, содержащего мой файл package.json
.
Надеюсь, что это поможет.
В других решениях не упоминается, что существует недокументированный гоночный приоритет. Например, у меня в "files": ["lib"]
package.json были "files": ["lib"]
. lib
это мой гитиньор только с этим состоянием это работает. тем не менее, был также lib/path/.gitignore
, который превзошел мой массив files
, в результате чего папка lib не была включена.
урок - обратите внимание на вложенные файлы .gitignore
Для меня наличие файла .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."