@bring-it/cli

SFTP deployment tool for frontend.

Usage no npm install needed!

<script type="module">
  import bringItCli from 'https://cdn.skypack.dev/@bring-it/cli';
</script>

README

@bring-it/cli

SFTP deployment tool for frontend.

npm github node

@bring-it/cli follows the principle of Convention over configuration, provide ssh like but lite version Command-Line Interface.

For a little bit safer, it will always upload files in order by: OTHER, SVG, STYLE, SCRIPT, HTML, XML/JSON/YAML .

Installation

npm install @bring-it/cli --global

Usage

bring-it <server>
Usage: bring-it <server>

Positionals:
  server  URI as user@hostname[:port][/path]
          or Host config name in '.ssh/config'

Options:
  -c, --cwd  default: .bring-it
  -k, --key  example: .ssh/id_rsa  [required]

Configuration

When not match URI, bring-it will treat it as a Host name in .ssh/config.

bring-it support .ssh/config like config with keys: Hostname, Port, User, and a custom key: Path

bring-it dev
# example: .ssh/config

# other Host will inherit from *
Host *
  User root

# = root@192.168.1.200/mnt
Host dev
  Hostname 192.168.1.200
  Path /mnt

# = deploy@example.org:2222
Host docs
  Hostname example.org
  Port 2222
  User deploy

Tips

Not like the HTTP URL, in the SFTP URI, Port is 22 by default.

Path will point to / by default, so don't forget set ChrootDirectory in /etc/ssh/sshd_config to a safe path on server.

Atomic write is not support when ssh/sftp/scp transfer, make your bundle support long-term caching, it will be safer when uploading.

FAQ

Why unauthorized transfer is not supported?

To make sure unexpected file transferring won't happen.

Why password is not supported?

Not safe, and typing special characters to the terminal might not easy.

TroubleShoot

cpu-features , optionalDependencie of ssh2 might trigger error logging when install. just ignore it.