0
我目前正在嘗試製作一個簡單的命令行節點程序,它允許我輕鬆地爲我製作的許多React/Redux應用程序創建樣板。我使用ShellJS來執行控制檯命令(我也試過使用Node's child_process)。問題是cli-spinner與執行終端命令一起工作。這是我的代碼:如何在ShellJS命令exec期間運行cli-spinner?
#! /usr/bin/env node
var shell = require('shelljs');
var userArgs = process.argv.slice(2);
var folderName = userArgs[0];
var Spinner = require('cli-spinner').Spinner;
var depSpin = new Spinner('Installing dependencies.. %s');
depSpin.setSpinnerString(10);
shell.mkdir(folderName);
shell.cd(folderName);
depSpin.start();
// I expect for the spinner to start here (before the execution of the commands.)
shell.exec('npm init -y', {silent: true});
shell.exec('npm install --save babel-core babel-loader babel-preset-es2015 babel-preset-react react-dom react-redux redux webpack', {silent: true});
shell.exec('npm install --save-dev babel-preset-env webpack-dev-server', {silent: true});
depSpin.stop();
// Since ShellJS should run synchronously,
// the spinner should stop right after the last command finishes.
shell.touch('webpack.config.js');
shell.mkdir(['build', 'frontend']);
shell.cd('frontend');
shell.mkdir(['components', 'containers', 'reducers', 'store']);
shell.touch('app.js');
但是,當運行該程序,它只是掛起而不顯示任何東西,而它會安裝依賴關係。這與微調代碼甚至不在那裏時是一樣的。我也嘗試刪除depSpin.stop()
,這隻會讓程序永遠掛在微調器上。我有一種感覺,這個問題是由於使用終端的cli-spinner
和ShellJS
之間的衝突造成的。