一键上传代码—shell脚本

作者: 旧丶时候 | 来源:发表于2017-12-25 15:56 被阅读0次

    0.前言

    在开发过程中,项目的编写还是修改是必不可少的,需要我们多次部署代码到仿真,线上,虽然不是我们的事,但是我们需要不断的打包,多麻烦,使用shell脚本帮你轻松搞定,上传到你想上传的地方,大大缩短时间。

    WechatIMG32588.jpeg

    1.简介

    Shell俗称壳,它接收用户命令,然后调用相应的应用程序。

    2.安装

    $ npm install [-g] shelljs

    3.用法

    有两种用法,一种是全局引用,也就是添加到window上

     require('shelljs/global')
    

    第二种就是当作一个全局变量。

    var shell = require('shelljs');
    shell.echo('hello world');
    

    但是官方不建议第一种方法,怕污染全局。


    image.png

    3.官方例子

    var shell = require('shelljs');
    
    if (!shell.which('git')) {
        shell.echo('Sorry, this script requires git');
        shell.exit(1);
    }
    
    // Copy files to release dir 
    shell.rm('-rf', 'out/Release');
    shell.cp('-R', 'stuff/', 'out/Release');
    
    // Replace macros in each .js file 
    shell.cd('lib');
    shell.ls('*.js').forEach(function (file) {
        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('..');
    
    // Run external tool synchronously 
    if (shell.exec('git commit -am "Auto-commit"').code !== 0) {
        shell.echo('Error: Git commit failed');
        shell.exit(1);
    }
    

    4.代码

    1. 导入
      require('shelljs/global')
    2. 查看修改的文件
      var res = exec('git status -s').stdout; console.log('开始转换 git status')
      exec里面的命令可以替换。按需要来。
    3. 筛选你修改的文件
    var arrayResult= res.split('\n');
    
    var array = []
    console.log('开始筛选 git status')
    
    array = arrayResult.filter((item) => {
        var i = item.trim()
        if(i[0] === 'M' || i[0] === 'A') {
            return true
        }
        return false
    }
    

    "M"或"A"是git里面的文件标志。

    状态 描述
    A 你本地新增的文件(服务器上没有)
    C 文件的一个新拷贝
    D 你本地删除的文件(服务器上还在)
    M 文件的内容或者mode被修改了
    R 文件名被修改了
    T 文件的类型被修改了
    U 文件没有被合并(你需要完成合并才能进行提交)
    X 未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
    1. 上传的地址
    var host = '上传的地址'
    console.log('开始转换 上传:',host)
    array.forEach((item) => {
        var i = item.trim().replace(/^m|^a/i,'').trim()
        exec(`要上传的地址`)
        console.log(i)
    })
    

    注意因为git status -s 查看文件的信息,需要在commit之前上传。

    5.应用

    执行npm命令,用nodejs调用shell脚本。


    image.png

    6.结束

    如果需要的话可以去官网看看,链接🔗https://www.npmjs.com/package/shelljs

    相关文章

      网友评论

        本文标题:一键上传代码—shell脚本

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