在自定义节点CLI工具中链接process.exec WP-CLI命令

问题描述

我一直在为此寻找高点和低点,尽管我发现了一些技巧,但对于我来说,没有任何窍门。

我要实现的目标:

一个node.js CLI工具,每当我开始一个新项目时,就可以使用它来搭建我的自定义wordpress环境。目前,我正在尝试按以下顺序执行这3条命令:

我正在做什么:

  • Node.js(最新版本)和child_process.exec
  • 粉笔自定义消息
  • 查询者,用于查询用户输入(路径,域URL等)
  • 微调器动画的CLUI(在下面的代码statusInstallstatusDownload中)
  • 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 (将#修改为@)