swiff-5 v1.0.9
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.
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago