Wondering what’s next for npm?Check out our public roadmap! »

    shell-deploy

    0.4.0 • Public • Published

    shell-deploy

    快速创建和执行一个自动化任务。

    自动化任务是由一些列动作组成的,常见的动作有复制、删除、上传等等。通过执行自动化任务可以大幅度提高开发效率。

    开发中经常会用到shell来做一些自动化任务,常见自动化任务有部署测试机、文件操作等等。不过shell具有众多版本、有些功能需要安装特定模块等问题,我们需要通过node代替shell

    shell-deploy通过可视化来选择每一步动作,再将每一步动作按照前后顺序组成一个自动化任务,最后将自动化转化成一个deploy.json配置文件并创建一个执行命令。

    通过编辑deploy.json配置文件来完善每一步动作内容,通过npm run来运行自动化任务。

    当一个项目有多人参与开发时,shell-deploy通过任务名称给每个人创建独立任务。每个人根据开发环境和习惯不同来创建自己的自动化任务,从而提高整个团队开发效率。

    快速开始

    使用shell-deploy模块分为三步

    1. 安装模块
    2. 创建任务
    3. 执行任务

    1.安装模块

    npm install shell-deploy

    或者

    yarn add shell-deploy

    2.创建任务

    执行创建命令

    npx shell-deploy -c

    或者

    npx shell-deploy --create

    按照命令选择每一步内容

    最终会生成一个deploy.json的配置文件, 同时会在package中创建相应的命令;

    比如创建一个名字叫preivew上传文件到服务器的任务

    演示gif图-w100%

    3.执行任务

    通过npm run或者yarn run方法执行相应任务名称

    比如执行preview任务

    npm run preview //上传文件到服务器

    或者

    yarn run preview //上传文件到服务器

    演示gif图-w100%

    配置文件说明

    第一次创建任务时会生成一个deploy.json配置文件,再次创建任务时会自动将任务添加到配置文件中, 所以deploy.json配置文件中会包含多个任务。

    每个任务都有一个Object对象,它具有三个属性:

    • name: 任务名称;
    • infor: 任务描述;
    • steps: 动作步骤;

    比如这是一个preview任务,主要功能是部署到服务器。这个任务具有两个步骤:执行命令和上传服务器。

    {
        "name": "preview",
        "infor": "部署到服务器",
        "steps": [{
            "type": "command",
            "command": "yarn run build"
        },{
            "type": "upload",
            "host": "10.150.100.100",
            "username": "root",
            "password": "****",
            "path": "/usr/server/nginx/staic/",
            "source": "./build/"
        }]
    }    

    动作列表:

    目前shell-deploy具有7个常见动作,通过这些工作不同顺序组合可以创建出很多任务。下面是每个动作API介绍。

    • upload
    • command
    • copy
    • cd
    • delete
    • git-pull
    • git-commit

    通用字段:

    • title: 说明当前步骤是什么

    upload

    将文件上传到服务器上

    • host: 服务器地址(可以是 IP 地址)
    • username: 用户名
    • password: 密码
    • path: 指定服务器上传路径
    • source: 本地上传文件路径

    比如将build文件夹整体上传到服务器/usr/server/nginx/staic/路径下(提醒:会生成build文件夹)

    {
        "type": "upload",
        "host": "10.150.100.100",
        "username": "root",
        "password": "****",
        "path": "/usr/server/nginx/staic/",
        "source": "./build/"
    }

    比如将build文件夹下所有文件上传到服务器/usr/server/nginx/staic/test路径下(提醒:不会生成build文件夹, 如果服务器上没有test文件夹会自动生成)

    {
        //.....
        "path": "/usr/server/nginx/staic/test",
        "source": "./build/*"
    }

    command

    需要执行的命令

    • command: 命令名称

    比如执行npm run build命令

    {
        "type": "command",
        "command": "npm run build"
    }

    copy

    复制文件和文件夹

    • source: 需要复制文件和文件夹路径
    • dest: 目标路径

    比如拷贝a.js文件到./dest/路径下 (提示:如果没有dest文件夹会自动创建一个)

    {
        "type": "copy",
        "source": "./test/a.js",
        "dest": "./dest/"
    }

    比如拷贝test整个文件夹到./dest/路径下 (提示:如果没有dest文件夹会自动创建一个)

    {
        "type": "copy",
        "source": "./test",
        "dest": "./dest/"
    }

    cd

    进入指定文件夹路径

    • path: 指定文件夹路径

    比如cd到./test/文件夹下

    {
        "type": "cd",
        "path": "./test/"
    }

    delete

    删除指定文件或者文件夹

    比如删除a.js文件

    {
        "type": "delete",
        "path": "./test/a.js"
    }

    git-pull

    通过git pull拉取代码

    比如拉取代码

    {
        "type": "git-pull"
    }

    git-commit

    通过git commit提交代码

    • message: 提交的文案; 如果这个字段不存在,会自动提示填写提交信息;

    比如提交代码

    {
        "type": "git-commit"
        "message": "修改xxx文件"
    }

    文件监听和定时执行任务

    有些时候需要自动执行任务,比如文件发生变化或者定时执行。通过使用chokidarcroncli两个模块来完成。

    通过chokidar-cli模块指定监听的文件,当文件变化时执行任务。比如:

    比如监听js文件变化,当js文件变化时执行任务

    chokidar "src/*.js" -"npm run preview"

    通过croncli模块创建定时任务,当时间到了以后执行任务

    比如每分钟执行自动化任务

    croncli -"0 * * * * *" -"npm run preview"

    Install

    npm i shell-deploy

    DownloadsWeekly Downloads

    40

    Version

    0.4.0

    License

    ISC

    Unpacked Size

    27 kB

    Total Files

    13

    Last publish

    Collaborators

    • avatar