РЕДАКТИРОВАТЬ: Не уверен, что произошло в начальном тесте, но .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 против зерна.
Есть ли более чистый подход для достижения того, что я пытаюсь сделать?