-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: pass generalAnswers to configure plugins #23
Conversation
@@ -89,7 +89,7 @@ export const installPackages = async ( | |||
pluginsToInstall: string[], | |||
registry: string, | |||
): Promise<string> => { | |||
const spinner = ora("Installing packages").start(); | |||
const spinner = ora("Installing packages (this may take a while)").start(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Изначально хотел сделать так, чтоб процесс установки выводился в консоль, но чет не нашел, как это сделать с сабпроцессами, чтобы оно работало как с нативными пакетными менеджерами.
Добавил тут эту приписку, чтобы не выглядело, так, как будто оно зависло. Гермиона устанавливается не быстро (например, сборка нативных модулей занимает какое-то время)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А чего не юзнуть execa
- https://github.com/sindresorhus/execa? В нем вроде удобно можно пайпить stdout в основной процесс.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Попробовал
Удобно
Нет. С 6 версии он pure esm, а cwd
только в 7 можно передавать
Можно пайпить stdout
Это все еще ничего не даст. Сам npm install
логов не пишет, он отображает текст в терминале (то есть, npm install 2> errLogs > logs
ничего интересного не дает)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Пробовал по-всякому, и shell
в spawn
передавать, и на события смотреть... npm
видит, что его запустили не совсем в терминале и молчит
await configBuilder.configurePlugins({ pluginNames, createPluginsConfig, generalAnswers }); | ||
|
||
const extraPackages = getExtraPackagesToInstall ? getExtraPackagesToInstall() : { names: [], notes: [] }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поменял их местами, чтобы при настройке одного плагина можно было добавить и другой: комплиментарный
@@ -65,13 +65,13 @@ export const run = async ({ | |||
? [baseGeneralPromptsHandler, generalPromptsHandler] | |||
: [baseGeneralPromptsHandler]; | |||
|
|||
await configBuilder.handleGeneralQuestions(generalPrompts, generalPromptsHandlers, opts); | |||
const generalAnswers = await configBuilder.handleGeneralQuestions(generalPrompts, generalPromptsHandlers, opts); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это может быть полезно в тех случаях, когда от ответа на такой вопрос зависит, как именно будет производиться настройка плагина
|
||
export interface PluginsConfig { | ||
[plugin: string]: (config: HermioneConfig) => void | Promise<void>; | ||
[plugin: string]: (config: HermioneConfig, generalAnswers?: Answers) => void | Promise<void>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Сделал тут | Answers
, чтобы не обязательно было при указании этого коллэка использовать generalAnswers
@@ -89,7 +89,7 @@ export const installPackages = async ( | |||
pluginsToInstall: string[], | |||
registry: string, | |||
): Promise<string> => { | |||
const spinner = ora("Installing packages").start(); | |||
const spinner = ora("Installing packages (this may take a while)").start(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А чего не юзнуть execa
- https://github.com/sindresorhus/execa? В нем вроде удобно можно пайпить stdout в основной процесс.
Что сделано