🔥 A blazing-fast static site generator that uses Laravel's Blade templating engine and leverages JSON or Markdown files for super-extensible content.
composer create-project aschmelyun/cleaver your-site-name
- PHP 7.3 or higher
- Fairly recent versions of node + npm
After creating your project with Composer, cd inside your project's root directory and install node dependencies:
npm install
From there you can build the site using the included demo content, which outputs to a dist/
folder in your project root:
npm run dev
Cleaver uses SCSS for styling, and there's a basic skeleton structure set up in the resources/assets/sass
directory. Tailwind is imported by default so you can jump right in to rapid development and prototyping.
There's a bootstrapped JavaScript file that imports lodash, jQuery, and Vue dependencies through npm to use with your project. That can be modified by editing the resources/assets/js/app.js
file.
To compile the SCSS/JS assets and build the static site files, you can run npm run dev
from the root. Additionally, using npm run watch
starts up a local node server that you can use to view your compiled project, and will watch the entire resources/
directory for changes to any assets, views, or content files.
If you would like to build your site without compiling the assets, run the php cleaver build
command from the project root.
If you build the site by calling php cleaver build
directly, here's a list of the current commands and accompanying arguments you can use:
php cleaver build {page}
builds the current site, rendering your content in theresources/content
directory and outputting HTML organized in a directory tree to/dist
. You can choose to render a single page or just a specific path in your content by including apage
argument. (e.g.php cleaver build posts/my-cool-post.md
)
Once you're ready to publish your site, simply run the command:
npm run production
Which will minify your assets and build the site again with the new versioned files.
You can then publish your entire project to a host of your choice as long as the web root is pointed to the /dist
folder. Additionally, you're free to just publish the built files in the dist folder by themselves.
Cleaver is still very much in development, and while it's designed to remain as simple as possible there's a few features that could make for a better overall experience. Here's what's on the path ahead:
- Ability to use folders in content directory
- Add collection containing all content into each view
- A better cli interface and style during site builds
- Ability to add in and use HTML in JSON content files
- More detailed build errors if something goes wrong
- Create and import site scaffolds from the command line
Have an issue? Submit it here! Want to get in touch or recommend a feature? Feel free to reach out to me on Twitter for any other questions or comments.
The MIT License (MIT). See LICENSE.md for more details.