The primary way of interacting with Hyde is through the command line using the HydeCLI.
If you have ever used the Artisan Console in Laravel you will feel right at home, the Hyde CLI is based on Artisan after all!
Hyde Commands#
To use the HydeCLI, run php hyde
from your project directory followed by a command.
Documentation syntax#
Wondering what the different formatting in examples means? Here's a quick guide:
1<argument> # Comes after the command name.2[<argument>] # Optional argument.3 4--option # Sometimes referred to as a flag.5--option=<value> # Option which takes an value.6[--option] # Optional option.
All HydeCLI commands start with php hyde
. Anything in [brackets]
is optional.
If an argument or option value has a space in it, it needs to be wrapped in quotes.
Got stuck? The CLI can help.#
You can always run the base command php hyde
, or php hyde list
, to show the list of commands.
1php hyde # or `php hyde list`
You can also always add --help
to a command to show detailed usage information.
1php hyde <command> --help
Initialize a new Hyde project#
1php hyde install
While Hyde doesn't need much configuration to get started, this command speeds up the little there is.
For example, it updates the config file with the supplied site name and URL, and can also publish a starter homepage and rebuild the site.
Build the static site#
1php hyde build
Maybe the most important command is the Build command, which -- you guessed it -- builds your static site!
Supports the following options:
1--run-dev Run the NPM dev script after build2--run-prod Run the NPM prod script after build3--run-prettier Format the output using NPM Prettier*4--no-api Disable API calls, for example, Torchlight
Sitemaps and RSS feeds#
Sitemaps and RSS feeds require that you have a base site URL set, (and that you have not disabled them).
When the features are available the build command will generate a sitemap and RSS feed.
You can also rebuild just the sitemap and RSS feed by using their respective commands:
1php hyde build:sitemap2php hyde build:rss
Build a single file#
1php hyde rebuild <filepath>
Using the php hyde build command is great and all that,
but when you just need to update that one file it gets a little... overkill.
To solve this problem, you can use the rebuild
command to compile a single file.
Requires the following Arguments:
1path The relative file path
Example:
1php hyde rebuild _posts/hello-world.md
Start the realtime compiler.#
1php hyde serve
The serve command feels similar to the Laravel Artisan serve command, but works by starting a local PHP server. When you visit a page, the server will use the realtime compiler to locate the source file, recompile it, and proxy the resulting HTML and any media files to your browser.
If you are missing the extension, you can always reinstall it with Composer composer require hyde/realtime-compiler
.
You can also learn more on the GitHub page.
Supports the following options:
1--port[=PORT] [default: "8080"]2--host[=HOST] [default: "localhost"]
Scaffold a new blog post file#
1php hyde make:post
At the core, blog posts are just pain ol' Markdown files.
However, by adding a special YAML syntax called Front Matter, you can add metadata to your posts.
But who can remember the syntax? You can use the make:post
command to scaffold a new blog post file.
The command will ask you a series of interactive questions, letting you fill in the blanks.
It will then create a file, converting your input into front matter. It automatically
sets the date and time for you, and the file name will be based on the title.
Scaffold a new page file#
1php hyde make:page <title> [--type=TYPE]
The make:page
command is similar to the make:post
command and lets you quickly
create one of the following page types:
-
Markdown:
Creates a Markdown file in the
_pages
directory. -
Blade:
Creates a Blade file using the app layout in the
_pages
directory. -
Docs:
Creates a Markdown file in the
_docs
directory.
In all cases, the title will be used in the created file as the page title, and to generate the filename.
Requires the following Arguments:
1title The name of the page file to create
Supports the following options:
1--type[=TYPE] The type of page to create (markdown, blade, or docs) [default: "markdown"]
Example:
1php hyde make:page About # Defaults to Markdown2php hyde make:page "Photo Gallery" --type=blade3php hyde make:page "Hyde CLI Guide" --type=docs
Tip: You can also use the shorthand
--blade
or--docs
instead of--type=blade
or--type=docs
.
Tip: You can also tell Hyde to place the file in a subdirectory by specifying it before the title, just separate them with a slash. For example:
php hyde make:page "getting-started/installation" --type="docs"
Publish a default homepage#
1php hyde publish:homepage [<name>]
Hyde comes with three homepage options to choose from. The homepage you select is stored as
_pages/index.blade.php
and becomes the index.html
file when compiling the site.
On a fresh install the page 'welcome' is installed. However, you can use this command to publish another one. If you have modified the file, you will need to supply the --force option to overwrite it.
The available homepages are:
- welcome: The default welcome page. Unlike the other pages, the styles are defined inline.
- posts: A Blade feed of your latest blog posts. Perfect for a blog site!
- blank: A blank Blade template with just the base app layout.
You can supply the homepage name directly to the command, otherwise you will be prompted to select one.
Publish the Hyde Blade views#
1php hyde publish:views [<category>]
Since Hyde is based on the Laravel view system the compiler uses Blade views and components.
Laravel actually registers two locations for the Hyde views: your site's resources/views/vendor/hyde
directory and the resources
directory located in the Framework package.
Warning: This command will overwrite any existing files in the
resources/views/vendor
directory.
You should be sure to have backups, or version control such as Git, before running this command.
So, when compiling a site, Laravel will first check if a custom version of the view has been placed in the resources/views/vendor/hyde
directory by the developer (you). Then, if the view has not been customized, Laravel will search the Hyde framework view directory. This makes it easy for you to customize / override the package's views.
The available views you can publish are:
- all: Publish all categories listed below
- layouts: Global layout views, such as the app layout, navigation menu, and Markdown page templates.
- components: More or less self-contained components, extracted for customizability and DRY code.
- 404: A beautiful 404 error page by the Laravel Collective. This file is already published by default.
You can supply the category name directly to the command, otherwise you will be prompted to select one.
Note that when a view is updated in the framework you will need to republish the views to get the new changes!
Republish the configuration files#
1php hyde update:configs
When updating Hyde to a new version (or if you mess up your config files), you can use this command to republish the configuration files.
Warning: This command will overwrite any existing files in the
config
directory.
You should be sure to have backups, or version control such as Git, before running this command.
List the available pages/routes#
1php hyde route:list
Display a list of all the discovered pages, their route keys, and their source and output paths.
Run validation tests to optimize your site#
1php hyde validate
Hyde ships with a very useful command that runs a series of checks to validate your setup and catch any potential issues.