Как исключить файлы 'bin' из пакета NPM? - PullRequest
1 голос
/ 06 февраля 2020

РЕДАКТИРОВАТЬ: Не уверен, что произошло в начальном тесте, но .gitignore и .npmignore теперь работают, чтобы исключить файлы bin по желанию.

У меня есть простой пакет NPM, который просто устанавливает двоичный файл, загрузив его с GitHub. Моя цель - исключить двоичный файл из опубликованного пакета и просто позволить сценарию установить его. Я думаю, что сценарию установки может потребоваться установить разные двоичные файлы в зависимости от платформы хоста, и во-вторых, нет необходимости разбирать размер пакета двоичными файлами.

Проблема в том, что я не могу получите NPM, чтобы игнорировать файлы 'bin'. Я попытался использовать атрибуты .gitignore, .npmignore и package.json 'files', а также поместить файлы bin в папку, отличную от bin, и похоже, что NPM настаивает на включении 'bin файлы. Соответствующий package.json в основном:

{
  "bin": {
    "my-bin": "./bin/my-bin"
  },
  "files": [ "bin-install.sh" ],
  "scripts": {
    "preinstall": "./bin-install.sh"
  },
}

В качестве обходного пути я могу манипулировать существованием каталога bin, например:

"scripts": {
  "preinstall": "./bin-install.sh",
  "prepublishOnly": "! [[ -d bin ]] || mv bin tmp",
  "prepack": "npm run prepublishOnly",
  "postpublish": "! [[ -d tmp ]] || mv tmp bin",
  "postpack": "npm run postpublish"
}

Это работает, но выглядит уродливо и делает меня думаю, что я упускаю что-то, что приводит меня к go против зерна.

Есть ли более чистый подход для достижения того, что я пытаюсь сделать?

1 Ответ

1 голос
/ 23 марта 2020

.npmignore должно работать, вот документы . Вы не показали, как именно вы пытались настроить игнорирование, но похоже, что вы пытались игнорировать все файлы внутри bin /, вот что вам нужно:

# inside .npmignore
bin/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...