const { spawn } = require('child_process');const child = spawn('ls', ['-lh', '/usr']);
// use child.stdout.setEncoding('utf8'); if you want text chunkschild.stdout.on('data', (chunk) => {// data from standard output is here as buffers});
// since these are streams, you can pipe them elsewherechild.stderr.pipe(dest);
child.on('close', (code) => {console.log(`child process exited with code ${code}`);});
const { execSync } = require('child_process');// stderr is sent to stderr of parent process// you can set options.stdio if you want it to go elsewherelet stdout = execSync('ls');
var spawn = require('child_process').spawn;var child = spawn('prince', ['-v', 'builds/pdf/book.html','-o', 'builds/pdf/book.pdf']);
child.stdout.on('data', function(chunk) {// output will be here in chunks});
// or if you want to send output elsewherechild.stdout.pipe(dest);
define(["require", "exports"], function (require, exports) {/*** Helper to use the Command Line Interface (CLI) easily with both Windows and Unix environments.* Requires underscore or lodash as global through "_".*/var Cli = (function () {function Cli() {}/*** Execute a CLI command.* Manage Windows and Unix environment and try to execute the command on both env if fails.* Order: Windows -> Unix.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @param callback Success.* @param callbackErrorWindows Failure on Windows env.* @param callbackErrorUnix Failure on Unix env.*/Cli.execute = function (command, args, callback, callbackErrorWindows, callbackErrorUnix) {if (typeof args === "undefined") {args = [];}Cli.windows(command, args, callback, function () {callbackErrorWindows();
try {Cli.unix(command, args, callback, callbackErrorUnix);} catch (e) {console.log('------------- Failed to perform the command: "' + command + '" on all environments. -------------');}});};
/*** Execute a command on Windows environment.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @param callback Success callback.* @param callbackError Failure callback.*/Cli.windows = function (command, args, callback, callbackError) {if (typeof args === "undefined") {args = [];}try {Cli._execute(process.env.comspec, _.union(['/c', command], args));callback(command, args, 'Windows');} catch (e) {callbackError(command, args, 'Windows');}};
/*** Execute a command on Unix environment.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @param callback Success callback.* @param callbackError Failure callback.*/Cli.unix = function (command, args, callback, callbackError) {if (typeof args === "undefined") {args = [];}try {Cli._execute(command, args);callback(command, args, 'Unix');} catch (e) {callbackError(command, args, 'Unix');}};
/*** Execute a command no matters what's the environment.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @private*/Cli._execute = function (command, args) {var spawn = require('child_process').spawn;var childProcess = spawn(command, args);
childProcess.stdout.on("data", function (data) {console.log(data.toString());});
childProcess.stderr.on("data", function (data) {console.error(data.toString());});};return Cli;})();exports.Cli = Cli;});
打字稿原始源文件:
/*** Helper to use the Command Line Interface (CLI) easily with both Windows and Unix environments.* Requires underscore or lodash as global through "_".*/export class Cli {
/*** Execute a CLI command.* Manage Windows and Unix environment and try to execute the command on both env if fails.* Order: Windows -> Unix.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @param callback Success.* @param callbackErrorWindows Failure on Windows env.* @param callbackErrorUnix Failure on Unix env.*/public static execute(command: string, args: string[] = [], callback ? : any, callbackErrorWindows ? : any, callbackErrorUnix ? : any) {Cli.windows(command, args, callback, function () {callbackErrorWindows();
try {Cli.unix(command, args, callback, callbackErrorUnix);} catch (e) {console.log('------------- Failed to perform the command: "' + command + '" on all environments. -------------');}});}
/*** Execute a command on Windows environment.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @param callback Success callback.* @param callbackError Failure callback.*/public static windows(command: string, args: string[] = [], callback ? : any, callbackError ? : any) {try {Cli._execute(process.env.comspec, _.union(['/c', command], args));callback(command, args, 'Windows');} catch (e) {callbackError(command, args, 'Windows');}}
/*** Execute a command on Unix environment.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @param callback Success callback.* @param callbackError Failure callback.*/public static unix(command: string, args: string[] = [], callback ? : any, callbackError ? : any) {try {Cli._execute(command, args);callback(command, args, 'Unix');} catch (e) {callbackError(command, args, 'Unix');}}
/*** Execute a command no matters what's the environment.** @param command Command to execute. ('grunt')* @param args Args of the command. ('watch')* @private*/private static _execute(command, args) {var spawn = require('child_process').spawn;var childProcess = spawn(command, args);
childProcess.stdout.on("data", function (data) {console.log(data.toString());});
childProcess.stderr.on("data", function (data) {console.error(data.toString());});}}
Example of use:
Cli.execute(Grunt._command, args, function (command, args, env) {console.log('Grunt has been automatically executed. (' + env + ')');
}, function (command, args, env) {console.error('------------- Windows "' + command + '" command failed, trying Unix... ---------------');
}, function (command, args, env) {console.error('------------- Unix "' + command + '" command failed too. ---------------');});
'use strict';
const { spawn } = require( 'child_process' );const ls = spawn( 'ls', [ '-lh', '/usr' ] );
ls.stdout.on( 'data', ( data ) => {console.log( `stdout: ${ data }` );} );
ls.stderr.on( 'data', ( data ) => {console.log( `stderr: ${ data }` );} );
ls.on( 'close', ( code ) => {console.log( `child process exited with code ${ code }` );} );
异步方法(Windows):
'use strict';
const { spawn } = require( 'child_process' );// NOTE: Windows Users, this command appears to be differ for a few users.// You can think of this as using Node to execute things in your Command Prompt.// If `cmd` works there, it should work here.// If you have an issue, try `dir`:// const dir = spawn( 'dir', [ '.' ] );const dir = spawn( 'cmd', [ '/c', 'dir' ] );
dir.stdout.on( 'data', ( data ) => console.log( `stdout: ${ data }` ) );dir.stderr.on( 'data', ( data ) => console.log( `stderr: ${ data }` ) );dir.on( 'close', ( code ) => console.log( `child process exited with code ${code}` ) );