linuxalready

shelljs使用指南

2022-08-27  本文已影响0人  涅槃快乐是金

shelljs模块重新包装了child_process,调用系统命令更加简单。
shelljsUnix ShellNode.js API层的轻量级实现,可以支持Windows、Linux、OS X。你可以像在Unix命令行敲命令一样书写代码

shelljs的安装

shelljs是第三方模块,需要安装后才能使用。

$ npm install shelljs -g
$ npm install shelljs --save

shelljs的使用说明

对于熟悉Unix Shell脚本的开发者,简单扫一眼API就能愉快的开始写代码了。
先看个例子:

var shell = require('shelljs');

//判定git命令是否可用
if (!shell.which('git')) {
    //向命令行打印git命令不可用的提示信息
    shell.echo('Sorry, this script requires git');
    //退出当前进程
    shell.exit(1);
}

//先删除'out/Release'目录
shell.rm('-rf', 'out/Release');
//拷贝文件到'out/Release'目录
shell.cp('-R', 'stuff/', 'out/Release');

//切换当前工作目录到'lib'
shell.cd('lib');
//shell.ls('*.js')返回值是一个包含所有js文件路径的数组
shell.ls('*.js').forEach(function(file) {//遍历数组
    //sed命令用于文件内容的替换,这里是对每个文件都执行如下3步操作,更改版本信息
    shell.sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
    shell.sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file);
    shell.sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, shell.cat('macro.js'), file);
});
//切换当前工作目录到上一层
shell.cd('..');

//同步执行git命令提交代码
if (shell.exec('git commit -am "Auto-commit"').code !== 0) {
    shell.echo('Error: Git commit failed');
    shell.exit(1);
}

上面的例子展示了一个可发布版本提交到git仓库的过程。

shelljs的方法都遵循:
方法名就是我们常用的执行命令,而方法参数就是命令行参数。只是有些方法对命令行参数做了变形和拓展。

重要方法介绍

exec()

Note:
由于exec()现在同步方法的实现占用了大量CPU,所以,官方建议使用异步模式运行一个需要长时间保活的进程。

例子:

var version = exec('node --version', {silent:true}).stdout;

var child = exec('some_long_running_process', {async:true});
child.stdout.on('data', function(data) {
  /* ... do something with data ... */
});

exec('some_long_running_process', function(code, stdout, stderr) {
  console.log('Exit code:', code);
  console.log('Program output:', stdout);
  console.log('Program stderr:', stderr);
});

ls()

ls方法返回一个包含给定的目标目录下的所有文件或目录路径集合的数组,如果没有给定路径,则默认为当前路径。如果设置了上面的提到的参数,则按照给定参数逐条将结果保存在数组中。

例子:

ls('projs/*.js');//
ls('-R', '/users/me', '/tmp');//递归遍历'/users/me'和'/tmp'
ls('-R', ['/users/me', '/tmp']); // 和上面一条一样
ls('-l', 'file.txt'); //[ { name: 'file.txt', mode: 33188, nlink: 1, ...} ]

ShellString()

ShellString()方法用于将常规字符串转换为ShellString。这样,就可以使用ShellString的方法to()toEnd()

ShellString.prototype.to(file)

类似Unix命令中的重定向操作>,即把ShellString的内容覆盖写入参数指定的file
例子:

//将input.txt的内容写入outpu.txt
cat('input.txt').to('output.txt');

ShellString.prototype.toEnd(file)

类似Unix命令中的重定向并附加操作>>,即把ShellString的内容写到指定文件的末尾。
例子:

//将input.txt的内容附加outpu.txt的末尾
cat('input.txt').to('output.txt');

shelljs API地址

shelljs官网地址:https://www.npmjs.com/package/shelljs

上一篇 下一篇

猜你喜欢

热点阅读