Use npm to install GitSite command line tool:
$ npm install -g gitsite-cli
Use the following command to update the latest version:
$ npm update -g gitsite-cli
First create an empty directory which will be used as your site's root directory and also a git repo. Let's name it as awesome:
$ mkdir awesome
Run gitsite-cli init under the awesome directory:
$ cd awesome
$ gitsite-cli init
The GitSite command line tool does the following job to initialize your new site:
Now you can find the following files and directories under your awesome directory:
awesome/
├── themes/       <-- all themes
│   └── default/  <-- a theme named 'default'
│
└── source/       <-- contains all markdown docs
    │
    ├── books/            <-- all books
    │   ├── user-guide/   <-- a book
    │   │   ├── book.yml  <-- book name, author and description
    │   │   ├── 10-introduction/  <-- chapter order and short name
    │   │   │   ├── README.md     <-- chapter content
    │   │   │   └── test.png      <-- static resources used in the chapter
    │   │   ├── 20-installation/  <-- chapter
    │   │   │   ├── README.md
    │   │   │   ├── 10-create-repo/  <-- sub chapter
    │   │   │   │   └── README.md
    │   │   │   ├── 20-workflow/     <-- sub chapter
    │   │   │   │   └── README.md
    │   │   │   └── 30-deploy/       <-- sub chapter
    │   │   │       └── README.md
    │   │   └── ...  <-- more chapters
    │   └── ...  <-- more books
    │
    ├── blogs/     <-- all blogs
    │   ├── tech/  <-- tag
    │   │   ├── 2024-01-01-hello/  <-- blog date and short name
    │   │   │   ├── README.md      <-- blog content
    │   │   │   └── hello.jpg      <-- static resources used in the blog
    │   │   └── ...                <-- more blogs
    │   └── ... <-- more tags
    │
    ├── pages/             <-- all pages
    │   ├── license/       <-- about page
    │   │   └── README.md  <-- page content
    │   └── ...            <-- more pages
    │
    ├── 404.md       <-- display as 404 page if not found
    ├── README.md    <-- display as home page
    ├── favicon.ico  <-- favorite icon
    ├── site.yml     <-- site config
    └── static/      <-- static resources
        ├── custom.css
        ├── logo.png
        └── ...
Run gitesite-cli serve to start a local HTTP server to serve the site:
$ gitsite-cli serve
Then you can visit your site on http://localhost:3000:

The site settings are stored in source/site.yml. You should update the settings:
To deploy site to GitHub page, first create a repo on GitHub and push your local files to the remote.
To enable GitHub page, go to repo - Settings - Pages - Build and deployment: select GitHub Actions.
Make a new push to trigger the Action for deployment.
The workflow script file is .github/workflows/gitsite.yml. Check the sample gitsite.yml.
You must set the root-path: /<rootPath> under which your site is served for GitHub pages deployment without custom domain, it is often /<projectName>:
site:
  # set when your site is served for GitHub pages without custom domain:
  root-path: /gitsite
Check the sample site.yml.
It is similar to deploy site to GitLab, and GitLab requires a .gitlab-ci.yml script.
Please make sure the submodule function is enabled by: Project - Settings - CI/CD - Variables - Add variable:
Key: GIT_SUBMODULE_STRATEGY
Value: recursive

Check the sample .gitlab-ci.yml.
To deploy site to CloudFlare page, create application from GitHub repo, then open application settings - Builds & deployments - Build configurations - Edit configurations:
npm install gitsite-cli -g && gitsite-cli build -o _site -v/_siteTo deploy site to Vercel, create a new project by import GitHub repo, then configure project:
./Build and Output Settings:
npm install -g gitsite-cli && gitsite-cli build -o dist -vdistGitSite generates pure HTML files by command gitsite-cli build. You can specify the output directory (default to dist) by --output or -o:
$ gitsite-cli build -o dist -v
You can run Nginx by Docker quickly:
$ docker run --rm -p 8000:80 -v /path/to/dist:/usr/share/nginx/html nginx:latest
Site is served and can be previewed at http://localhost:8000.