我正在構建Yeoman生成器,完成後我想執行一些命令行操作,如'npm install','bower install'和'grunt less'。我爲此使用spawnCommand,並使用事件偵聽器嵌套所有操作以同步執行它們。然而,爲了避免這種無休止的嵌套,我正在尋找一個更清晰的實現,以使其易於擴展。 完美的是,我想擁有一個帶有命令的數組(例如['npm install','grunt install','less:dev']),並通過正確的錯誤檢測同步處理。在Yeoman生成器完成後同步執行命令行操作
// Install npm packages
this.spawnCommand('npm', ['install'])
.on('exit', function (err) {
if (err) {
this.log.error('npm package installation failed. Please run \'npm install\' and \'bower install\'. Error: ' + err);
} else {
// Install bower packages
this.spawnCommand('bower', ['install'])
.on('exit', function (err) {
if (err) {
this.log.error('bower package installation failed. Please run \'bower install\'. Error: ' + err);
} else {
this.spawnCommand('grunt', ['less'])
.on('exit', function (err) {
if (err) {
this.log.error('Less compilation failed. Please run \'grunt less:dev\'. Error: ' + err);
} else {
}
}.bind(this));
}
}.bind(this));
}
}.bind(this));
不是「同步」,而是「連續」。 – Bergi
你有沒有嘗試過推廣這個功能? – Bergi
您可能想看看承諾,但我不知道如何輕鬆地將庫包含在yeoman腳本中。 – Bergi