Я думаю, что лучший подход - это иметь CLI в отдельном пакете, похожем на express-generator , который является CLI для express.
Даже если это важно для разработки, пользователям вашей библиотеки нужно будет набрать только одну дополнительную команду, npm install library-cli
, и если это правильно задокументировано, я не вижу никаких проблем.
Вы также можете добавить сценарий postinstall
или пользовательский сценарий в основную библиотеку, которая устанавливает CLI после установки пакета:
"scripts": {
"postinstall": "npm install -g library-cli"
}
Однако также хорошо, если вы решили связать свой CLI с основной библиотекой, однако в этом случае вам не следует помещать зависимости CLI в devDependencies
. Все модули, необходимые для запуска cli, должны входить в dependencies
, даже если 90% пользователей никогда не будут их использовать.
devDependencies
следует использовать для всех инструментов, которые требуются в процессе сборки, таких как минификация, тесты, машинопись и т. Д. Все, что требуется во время выполнения для вашего CLI , должно входить в dependencies
.