我目前正在尝试制作一个简单的命令行节点程序,让我可以轻松地为我制作的许多 React/Redux 应用程序创建样板。我正在使用ShellJS执行控制台命令(我也尝试过使用Node 的 child_process。)问题是让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