美文网首页
shelljs前端自动化

shelljs前端自动化

作者: small_zeo | 来源:发表于2021-04-02 12:21 被阅读0次

场景

在开发过程中,常会遇到如下命令:

git add .
git commit -m '*****'
git push 

Shelljs

这个库能够让我们在js文件中执行shell命令。shelljs做的事就是自动化,从耗时的重复性常规动作里解放出来,提升开发效率和工作心情。

1.Installing

$ npm install  shelljs -D
  1. 在根目录下新建文件shell.js,内容如下:
let shell = require('shelljs')
let name = process.argv[2] || 'Auto-commit';
let exec = shell.exec

if (exec('git add .').code !== 0) {
    echo('Error: Git add failed')
    exit(1)
}
if (exec(`git commit -am "${name}"`).code !== 0) {
    echo('Error: Git commit failed')
    exit(1)
}
if (exec('git push').code !== 0) {
    echo('Error: Git commit failed')
    exit(1)
}

3.只用一条命令执行以上所有任务,在package.json中加入,方法如下:

"script":{
    "push":"node ./shell.js"
}
$ npm run push 测试shelljs提交代码
image.png

上述操作就可以通过执行shelljs脚本提交代码啦。

Examples

1.运行命令环境时,配置文件config根据开发和生产环境进行区分, 所以这里根据命令环境,将文件复制到目标文件,以vue.config.js为例,区分开发和生产环境:


image.png
// 运行命令环境 用于config区分开发和生成环境
const shell = require('shelljs')
const apiEnv = process.env.API_ENV
shell.cp(`./src/config/${apiEnv}.js`, './src/config/index.js')
image.png

基本语法

  1. shell.which(command)
    在环境变量PATH中寻找指定命令的地址,判断该命令是否可执行,返回该命令的绝对地址

  2. echo
    在控制台输出指定内容

  3. exit(code)
    以退出码为code退出当前进程

//引入shelljs
var shell = require('shelljs')
 
//检查控制台是否以运行`git `开头的命令
if (!shell.which('git')) {
  //在控制台输出内容
  shell.echo('Sorry, this script requires git');
  shell.exit(1);
}

4.rm([options,] file [,file ...])
删除一个目录中一个或多个文件或目录,一旦删除,无法恢复。
常用参数:
-f:强制删除文件;
-i:删除之前先询问用户;
-r:递归处理目录;
-v:显示处理过程;

shell.rm('-rf','out/Release')  //强制递归删除`out/Release目录` 
  1. cp([options,] source_array, dest)
    用来将一个或多个源文件或目录复制到指定的文件或目录
shell.cp('-R','stuff/','out/Release')  //将`stuff/`中所有内容拷贝至`out/Release`目录
  1. cd
    切换工作目录至指定的相对路径或绝对路径。cd..为返回上一级,cd-回到前一目录
shell.cd('lib')  //进入`lib`目录
  1. ls
    用来显示目标列表
ls(path.join('bundle', 'css/')).forEach(cssName => {
  ***
})
  1. sed([options,] search_regex, replacement, file_array)
    将file_array中符合search_regex的内容替换为replacement,支持正则的捕获组自引用。一次处理一行内容,处理完成后把缓冲区内容送往屏幕,然后处理下一行,循环直至结束。
/* -i表示直接作用源文件 */
/* 将build_version字段替换为'v0.1.2' */
  shell.sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
  1. cat([options,] file [, file ...])
    将一个或多个文件内容读入,指定一个文件时读入该文件,指定多个文件时将内容连接在一起读入。

shelljs-npm
shelljs官方文档
shelljs-github
shelljs中文文档介绍

相关文章

网友评论

      本文标题:shelljs前端自动化

      本文链接:https://www.haomeiwen.com/subject/zowfkltx.html