Have ideas to improve npm?Join in the discussion! »

    shipit-cli
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/shipit-cli package

    5.3.0 • Public • Published

    shipit-cli

    Build Status version MIT License

    Shipit command line interface.

    npm install --save-dev shipit-cli
    

    Usage

    Usage: shipit <environment> <tasks...>
    
    Options:
    
      -V, --version         output the version number
      --shipitfile <file>   Specify a custom shipitfile to use
      --require <files...>  Script required before launching Shipit
      --tasks               List available tasks
      --environments        List available environments
      -h, --help            output usage information
    

    shipitfile.js

    module.exports = shipit => {
      shipit.initConfig({
        staging: {
          servers: 'myproject.com',
        },
      })
     
      shipit.task('pwd', async () => {
        await shipit.remote('pwd')
      })
    }

    API

    shipit.task(name, [deps], fn)

    Create a new Shipit task. If a promise is returned task will wait for completion.

    shipit.task('hello', async () => {
      await shipit.remote('echo "hello on remote"')
      await shipit.local('echo "hello from local"')
    })

    shipit.blTask(name, [deps], fn)

    Create a new Shipit task that will block other tasks during its execution. If a promise is returned other task will wait before start.

    shipit.blTask('hello', async () => {
      await shipit.remote('echo "hello on remote"')
      await shipit.local('echo "hello from local"')
    })

    shipit.start(tasks)

    Run Shipit tasks.

    shipit.start('task')
    shipit.start('task1', 'task2')
    shipit.start(['task1', 'task2'])

    shipit.local(command, [options])

    Run a command locally and streams the result. See ssh-pool#exec.

    shipit
      .local('ls -lah', {
        cwd: '/tmp/deploy/workspace',
      })
      .then(({ stdout }) => console.log(stdout))
      .catch(({ stderr }) => console.error(stderr))

    shipit.remote(command, [options])

    Run a command remotely and streams the result. Run a command locally and streams the result. See ssh-pool#connection.run.

    shipit
      .remote('ls -lah')
      .then(([server1Result, server2Result]) => {
        console.log(server1Result.stdout)
        console.log(server2Result.stdout)
      })
      .catch(error => {
        console.error(error.stderr)
      })

    shipit.copyToRemote(src, dest, [options])

    Make a remote copy from a local path to a remote path. See ssh-pool#connection.copyToRemote.

    shipit.copyToRemote('/tmp/workspace', '/opt/web/myapp')

    shipit.copyFromRemote(src, dest, [options])

    Make a remote copy from a remote path to a local path. See ssh-pool#connection.copyFromRemote.

    shipit.copyFromRemote('/opt/web/myapp', '/tmp/workspace')

    shipit.log(...args)

    Log using Shipit, same API as console.log.

    shipit.log('hello %s', 'world')

    Workflow tasks

    When the system initializes it automatically emits events:

    • Emit event "init"
    • Emit event "init:after_ssh_pool"

    Each shipit task also generates events:

    • Emit event "task_start"
    • Emit event "task_stop"
    • Emit event "task_err"
    • Emit event "task_not_found"

    Inside the task events, you can test for the task name.

    shipit.on('task_start', event => {
      if (event.task == 'first_task') {
        shipit.log("I'm the first task")
      }
    })

    License

    MIT

    Install

    npm i shipit-cli

    DownloadsWeekly Downloads

    5,285

    Version

    5.3.0

    License

    MIT

    Unpacked Size

    23.4 kB

    Total Files

    8

    Last publish

    Collaborators

    • avatar
    • avatar