Note: Currently in Development (Will merge to Swiff after approval)
Swiff streamlines common SSH tasks during website/app development, saving you valuable time.
Keep folders in sync between servers effortlessly.
Manage databases between servers with automatic backups.
Transfer composer files between servers with automatic backups.
Launch an SSH session directly into the remote site/app folder.
Access all logs with swiff.log
.
-
Install Swiff globally with npm:
npm install --global swiff-4@latest
-
Run Swiff:
swiff-4
-
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.
-
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:
defaultEnvironment: "staging", environments: { staging: { user: "", host: "", appPath: "", port: 22, }, production: { user: "", host: "", appPath: "", port: 22, }, },
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,
// dir: '', // Default root: "./storage/logs/"
maxSize: 10 * 1024 * 1024, // Recommended 10MB max log file size
},
environments: {
staging: {
user: "",
host: "",
appPath: "",
port: 22,
},
production: {
user: "",
host: "",
appPath: "",
port: 22,
},
},
local: {
ddev: true,
},
env: {
prefix: null, // Example: "CRAFT_" for projects above version 4
},
pushFolders: [
// { path: "config", exclude: "/project/*" },
// 'templates',
// 'public/dist'
],
pullFolders: [
// 'public/assets/volumes'
],
disabled: ["databasePush"],
};
Swiff works with MySQL databases and supports ddev
(requires local.ddev = true
).
- 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
- 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.