In fact, during the course of my experience I found that it's extremely frustrating to keep going through many steps to achieve some routine management tasks such as building, previewing, posting, deploying, etc.
So, that motivated me to create an easy-to-use tool which does all those things simply with individual commands, and I decided to assign JekySimple for a name representing my humble project as a whole, the tool now is available on a git repository.
JekySimple OverviewJekySimple is a humble bash script created for Jekyll as a management tool to steadily generate static sites with simple and individual commands on Linux based operating systems, it only requires one-time configuration for a single user along with the ability to support multiple accounts.
Main FeaturesLets start listing the most desirable features that JekySimple does offer:
- Ability to initialize and automatically configure Git Repositories for Jekyll.
- Ability to post dynamically into Jekyll including date with pre-configured post templates.
- You can specify a text editor to be used when ever you want to create a post.
- You can preview your changes with a simple command locally.
- You can build Jekyll easily using one command with all your preferred settings.
- It has a "clean" function to automatically clear all temporary and unnecessary files.
- Ability to deploy your site into Git Repositories or local Webservers.
- Support for auto-deploy and auto-commit features.
- GitHub Pages integration with an option to specify "master" or "gh-pages" branch for deployment.
- You can create multiple configuration files for different users with unique settings.
- All variables fall back to default when empty or missing from user config file.
That and many more, I would like to state that each task will require a single command to perform, which makes routine management much easier for you to do.
RequirementsThis means you can't use JekySimple without the following conditions:
- Any Linux OS with Bash.
- Git initializing and deployment features require a "git" package to be installed.
- You must already be able to build Jekyll normally just to make sure that everything is working.
So, that's all as far as I can tell.
LimitationsI would like to highlight the following limiting factors:
- It cannot work if you haven't installed and configured Jekyll properly.
I will be listing more while testing, I am not entirely sure at the moment.
UsageBasically, after you prepare a special config file with your desired settings, you let Jekysimple do all the stuff that are pre-configured already with a single command.
Initialize Git Repository
This command will let you either initialize a completely new git repository that you have just created remotely, or clone an already existing Jekyll project to be paired with JekySimple. Anyway, if you prefer to just initialize git manually by yourself, then just fill required git information inside config file and skip this.
This option is used whenever you want to publish a new post, it will automatically enclose the date within a typical post template that you can customize. After that, it will launch your favorite text editor for you to edit the new post and save it.
Preview Jekyll Locally
That will technically perform
jekyll servecommand but with your pre-configured settings for JekySimple, which will execute a local web service into the system so that you can preview the site on your browser before deploying it.
Build Jekyll Site
Similarly, that will technically perform
jekyll buildcommand but with your pre-configured settings for JekySimple.
Deploy to Git/Webserver
Once you are confident and satisfied with the results after building/previewing, you can use this command to deploy changes online into your git repository host, make sure that you have identified git credentials correctly inside the config file.
Well, nothing too fancy here it's quite self explanatory, this will firstly delete the built site from your system since you don't need that after deploying. Secondly, it will clean the source from Jekyll cache and metadata.