swiff-5
v1.0.9
Published
Swiff saves you time with common SSH tasks during the development of websites/apps
Downloads
17
Maintainers
Readme
Swiff
Note: Currently in Development (Will merge to Swiff after approval)
Swiff streamlines common SSH tasks during website/app development, saving you valuable time.
Key Features
🚀 Folder Synchronization
Keep folders in sync between servers effortlessly.
💫 Database Management
Manage databases between servers with automatic backups.
🎩 Composer File Management
Transfer composer files between servers with automatic backups.
💻 Remote Terminal Connection
Launch an SSH session directly into the remote site/app folder.
💻 Logger
Access all logs with swiff.log
.
Getting Started
Install Swiff globally with npm:
npm install --global swiff-5@latest
Run Swiff:
swiff-5
Additional Features
Custom SSH Identity: Swiff uses your identity located at
/Users/[currentUser]/.ssh/id_rsa
. Specify a custom SSH key path in your.env
file with:SWIFF_CUSTOM_KEY="/Users/[your-user]/.ssh/[key-filename]"
Gzipped Backups: Automatically back up and gzip your files and databases whenever they change.
Disable Specific Tasks: Specify tasks to disable via a config setting.
Dotenv Setup: Required
.env
# The environment currently running in ('dev', 'staging', 'production', etc.)
ENVIRONMENT="dev"
SECURITY_KEY=""
DB_USER="db"
DB_PASSWORD="db"
DB_DATABASE="db"
DB_PORT="3306"
DB_DRIVER="mysql"
DB_SERVER="localhost"
DB_TABLE_PREFIX="craft"
Also this can be prefixed in swiff.config.js
env: {
prefix: "CRAFT_",
},
Folder Sync Enhancements: New features include
see diff
and validation sync withgit
.Enhanced Logger:
swiff.log
includes max size settings to manage log file size:logging: { enabled: true, dir: '', // Default root: "./storage/logs/" maxSize: 10 * 1024 * 1024, // Recommended 10MB max log file size },
Multi-Environment Support: Must have
defaultEnvironment
inenvironments
object.defaultEnvironment: "staging", environments: { staging: { // The SSH login username user: "", // The IP/hostname of the remote server host: "", // The working directory of the remote app folder appPath: "", // The SSH port to connect on (22 is the SSH default) port: 22, }, production: { user: "", host: "", appPath: "", port: 22, }, },
Requirements
Swiff requires Node.js LTS version (16.0.0+).
Place the following in swiff.config.js
at the root of your application:
export default {
defaultEnvironment: "staging",
logging:{
enabled: true,
// change log directory (Default root: example "./storage/logs/")
dir:'',
// recommended 10mb max log file size than clears log
maxSize: 10 * 1024 * 1024,
},
environments: {
staging: {
// The SSH login username
user: "",
// The IP/hostname of the remote server
host: "",
// The working directory of the remote app folder
appPath: "",
// The SSH port to connect on (22 is the SSH default)
port: 22,
},
production: {
user: "",
host: "",
appPath: "",
port: 22,
},
},
local: {
// Play sound for task start, message, error
playsound: true,
// If the env is ddev
ddev: true,
// Add validation check with git for folderPush makes it consistent
git: true
},
env:{
prefix: null
},
pushFolders: [
// { path: "config", exclude: "/project/*" },
// 'templates',
// 'web/dist'
],
pullFolders: [
// 'web/assets/volumes'
],
disabled: ["databasePush"],
};
;
Swiff works with MySQL databases and supports ddev
(requires local.ddev = true
).
Technology
- Node.js - JavaScript runtime built on Chrome's V8 engine
- Ink 2 - React for interactive command-line apps
- Babel - JavaScript transpiler
- Rollup - JavaScript module bundler
- Prettier - Code formatter
- Pino - Logger
Credits
- Sounds by Emoji Sounds
- Created by @benrogerson and Sam Stevens
- Updated & Maintained by @suprimgolay
- Swiff has been agency battle-tested by Simple, specializing in Craft CMS websites.