Почему в моем пакете Node.js отсутствует основной файл при глобальной установке? - PullRequest
1 голос
/ 29 мая 2020

Кажется, что задать этот вопрос неудобно, но, недавно опубликовав пакет Node в реестре NPM, я обнаружил, что он не работает.

Кажется, проблема в том, что мой основной файл, ./src/index.js, не включается в глобальную установку.

  • Я знаю это, потому что, когда я вызываю пакет из командной строки, он запускает ./bin/cli.js в пакете, как и ожидалось, но затем выдает:

    Error: Cannot find module '../src/index.js'
    Require stack:
    - /usr/lib/node_modules/diffcraft/bin/cli.js
    

    Ошибка даже ссылается на строку в ./bin/cli.js, где требуется индексный файл, так что проблема определенно в этом.

  • Я также знаю это, потому что я проверил папку, в которой модуль установлен глобально, и, хотя папка bin есть, папки src нет. Так что основного кода для моего пакета просто нет.

Обнаружив это, я даже пропатчил package. json, чтобы ./src/index.js был явно внесен в белый список files массив. Я не делал этого раньше, поскольку NPM руководство утверждает, что любой файл, указанный в main, также автоматически попадает в белый список. Но даже включение файла в files явно не сработало.

Для справки, у меня нет файла .npmignore.

У меня ужасное чувство, m отсутствует что-то простое и базовое c ... Есть идеи, почему мой основной файл может быть пропущен?

Пакет diffcraft .

1 Ответ

1 голос
/ 29 мая 2020

Работает, если вы опускаете ./ перед файлами (проверено с npm 6.14.4 на Windows):

  "files": [
    "bin/cli.js",
    "src/index.js"
  ],

Это может быть ошибкой в ​​npm .

Вы можете проверить это без публикации, запустив npm pack и проверив файл архива.

Альтернативой является использование файла .npmignore.

...