shelljs前端自动化

shelljs前端自动化场景 在开发过程中,常会遇到如下命令: Shelljs 这个库能够让我们在js文件中执行shell命令。shelljs做的事就是自动化,从耗时的重复性常规动作里解放出来,提升开发效率和工作心情。 1.

场景

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

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

Shelljs

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

1.Installing
$ npm install  shelljs -D
2. 在根目录下新建文件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为例,区分开发和生产环境:

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

image.png

image.png

基本语法

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

  • echo 在控制台输出指定内容

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

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

  • rm([options,] file [,file …]) 删除一个目录中一个或多个文件或目录,一旦删除,无法恢复。 常用参数: -f:强制删除文件; -i:删除之前先询问用户; -r:递归处理目录; -v:显示处理过程;
shell.rm('-rf','out/Release')  //强制递归删除`out/Release目录` 
  • cp([options,] source_array, dest) 用来将一个或多个源文件或目录复制到指定的文件或目录
shell.cp('-R','stuff/','out/Release')  //将`stuff/`中所有内容拷贝至`out/Release`目录
  • cd 切换工作目录至指定的相对路径或绝对路径。cd..为返回上一级,cd-回到前一目录
shell.cd('lib')  //进入`lib`目录
  • ls 用来显示目标列表
ls(path.join('bundle', 'css/')).forEach(cssName => {
  ***
})
  • 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);
  • cat([options,] file [, file …]) 将一个或多个文件内容读入,指定一个文件时读入该文件,指定多个文件时将内容连接在一起读入。

shelljs-npm

shelljs官方文档

shelljs-github

shelljs中文文档介绍

今天的文章shelljs前端自动化分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21143.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注