Я делаю Yeoman generator
для установки CraftCMS
с некоторыми пользовательскими настройками и файлами, предварительно загруженными для ускорения разработки.
У меня есть точка, где скрипт выполняет composer create-project craftcms/craft
.Для меня следующим логическим шагом было бы cd
в папку и запустить мастер установки craft craft install
.
Я просто не могу понять, как сделать так, чтобы строки кода работали синхронно.На данный момент он работает все одновременно, что, конечно, приведет к ошибкам.
Это мой код:
'use strict';
const generator = require('yeoman-generator');
const chalk = require('chalk');
const yosay = require('yosay');
let init;
module.exports = class extends generator {
async initializing() {
this.log(yosay(chalk.blue('Hey!') + '\n' + 'Welcome to the Visited Installer!' + '\n\n' + 'Let\'s start a project together!'));
init = await this.prompt([{
type: 'input',
name: 'name',
message: 'What is the name of your new project?',
}]);
this.log(yosay(chalk.blue(init.name) + ', Great!' + '\n\n' + 'Let\'s start by downloading the latest version of CraftCMS.'));
}
install() {
this.spawnCommand('composer', ['create-project', 'craftcms/craft', init.name]);
this.log(yosay(chalk.blue('Done!') + '\n\n' + 'The next step is installing CraftCMS, Don\'t worry, I\'ve got this!'));
this.spawnCommand('cd', [init.name]);
this.spawnCommand('craft', ['install']);
}
};
Я попытался прочитать об асинхронном и синхронном программировании вJS, но из-за того, что я не являюсь носителем английского языка, и из-за того, что я не очень много работаю с JS (я в основном использую PHP), мне трудно понять логику, стоящую за этим.
Обновление : я изменил свой пост, перепутал асинхронность и синхронизацию в своей голове.Проблема остается в том, что все в моей функции install()
работает одновременно: this.log
не ждет, пока this.spawnCommand
завершит загрузку и настройку файлов ..