问题描述
我一直在为此寻找高点和低点,尽管我发现了一些技巧,但对于我来说,没有任何窍门。
我要实现的目标:
一个node.js CLI工具,每当我开始一个新项目时,就可以使用它来搭建我的自定义wordpress环境。目前,我正在尝试按以下顺序执行这3条命令:
- 下载WP Core(wp核心下载)
- 使用我的数据库凭据创建wp-config.php文件(创建wp config)
- 运行WP Core安装程序(wp core安装)
我正在做什么:
- Node.js(最新版本)和child_process.exec
- 粉笔自定义消息
- 查询者,用于查询用户输入(路径,域URL等)
- 微调器动画的CLUI(在下面的代码
statusInstall
和statusDownload
中) - WP-CLI(没有诸如node-wp-cli之类的包装器,这些包装器已经过时且写得不好)
我的问题
我现在能够成功运行这三个命令。我的问题是,每当完成最后一个(wp核心安装)时,节点似乎都不会返回主线程。您知道,我的工具应该可以做到:
- WP下载/配置/安装例程
- 在设置git存储库(先询问令牌然后询问回购详细信息)
- 退出
当前,它成功完成了整个WP例程,但是完成后什么也没发生。我认为通过按任意键,它将简单地转到下一步并考虑该击键,即,如果按Enter键,它将验证下一步(即问号),如果按空格,它将以一个可以删除的空格开头,但是说实话,这对于干净的工作流程来说确实很乏味。 Here's what it looks like in a GIF。您可以看到,只有当我向我的S邮件发送垃圾邮件时,它才转到下一步。每当安装过程完成时,我都希望它可以进行下一步,这确实非常快。
这已经让我发疯了几天。我几乎尝试了所有我能想到的一切,并使用了各种promise语法。我真的需要一双新鲜的眼睛。这是一些代码:
index.js
// WP --- Install
const wpInstallInstance = await wp.installationRoutine();
// GitHub --- Token
const token = await getGithubToken();
github.githubAuth(token);
wp.js
我猜这里有一种更好的方法来链接exec函数,所以我愿意改变我的方法。
installationRoutine: async () => {
const wpInstallDetails = await inquirer.askwordpressDetails();
statusDownload.start();
fs.mkdir(wpInstallDetails.path,{ recursive: false },(err) => {});
return exec(
`wp core download --path=${wpInstallDetails.path} --locale=${wpInstallDetails.locale} --skip-themes --skip-plugins --allow-root`,(error,stdout,stderr) => {
console.log(chalk.green("\n? WP Core downloaded"));
statusDownload.stop();
return exec(
`wp config create --path=${wpInstallDetails.path} --dbname=testWP --dbuser=XXXX --dbpass=XXXX --allow-root`,(error1,stdout1,stderr1) => {
console.log(chalk.green("? WP Config created"));
statusInstall.start();
return exec(
`wp core install --path=${wpInstallDetails.path} --url="${wpInstallDetails.url}" --admin_user="${wpInstallDetails.adminUser}" --admin_password="${wpInstallDetails.adminPwd}" --admin_email="${wpInstallDetails.adminemail}" --title="${wpInstallDetails.siteTitle}" --allow-root`,(error2,stdout2,stderr2) => {
statusInstall.stop();
console.log(chalk.green("? WP Core installation finished"));
}
);
}
);
}
);
提前谢谢您,祝您愉快!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)