- Development Server - No need to maintain one in your Gulp/Grunt file.
- Path Management - Automatically maps and translates paths between source, destination, development and runtime.
- Cache Busting with Version Hashes - Allows you to generate files at runtime named with a hashed version number from your package.
- Internationalization (i18n) - i18n methods are available to all views rendered by the development server and the generator.
- View Engines - Generate your site from Pug/Jade or Nunjucks templates. (More view engines could be added in the future.)
- View Contexts - Use the automatic global view context which provides access to build info, staticbuild methods and i18n or configure your own js file to expand upon the built-in view context.
- Getting Started
- Project Directory
- Command Line Interface
- API Documentation
- Why Pug (Jade) and Nunjucks?
npm install -g staticbuild
Then, to setup a new project in the specified path:
staticbuild setup [path]
Setting up basic site template.... Done. When ready, please run: npm install && bower install To view the site during development: npm run dev To generate the site for production: gulp
(The path argument is optional and defaults to the current directory.)
npm install --save-dev staticbuild
package.json file for your project, add one of the following and then
run it with
npm run dev. Look at the
demo projects for more details.
Look in the demo code to see a typical setup.
The following open source sites are also using StaticBuild:
demo/jade for an example. Run
npm install in the demo and then
npm run dev.
The project directory should contain a
staticbuild.json configuration file
or be organized according to the default configuration. A project directory
organized according to the default-staticbuild.json configuration looks like
/path/to/project - locales/... - src/... - [staticbuild.json]
src/ directory is the root of the site which can contain static
.css files as well as
.less and/or nunjucks
locales/ directory is used by
to store json files which are created automatically during development when
Configuration is primarly read from a JSON file, named
Look at the
demo projects and the main
index.js for more information.
Command Line Interface
The default command right now is to just run the development server. That may change in the future and more commands will be added to generate files like a gulp or grunt file.
staticbuild v0.12.4 - A static website generator and development server. Usage: staticbuild [command] [options] Commands: dev Run the development web server. setup Setup a new project. Options: -v, --version Show version number. [boolean] -h, --help Show help. [boolean] -V, --verbose Enables verbose output. [count]
staticbuild v0.12.4 - Development server. Runs a local http server to dynamically render static content during development. Usage: staticbuild dev [options] <path> Required: path Path to a staticbuild.json file or directory to find one. If no path is supplied, the current directory is used. Options: -v, --version Show version number. [boolean] -h, --help, --help Show help. [boolean] -b, --bundling Enable bundling. [boolean] [default: false] -r, --restart Number of seconds to delay nodemon restarts. [number] [default: 1] --no-restart Disables the built-in nodemon server restart. -V, --verbose Enables verbose output. [count]
At the time of this writing, this command simply creates a default
staticbuild v0.12.4 - Setup. Interactive setup to create a new project. Usage: staticbuild setup [options] [path] Options: -v, --version Show version number. [boolean] -h, --help, --help Show help. [boolean] -V, --verbose Enables verbose output. [count]
Why Pug (Jade) and Nunjucks?
Any view engine can be plugged into staticbuild eventually. Pug (previously known as Jade) was initially used since it is the authors preference for emitting HTML.
Nunjucks was chosen as the first alternate to Jade since it can use templates to emit any type of text-based file format, not just HTML. This can be very useful for generating other types of fixtures for your static website such as markdown files, JSON, XML and so on.
- Create tests.
- Make some nicer demos.
- Create Configuration documentation.
- Improve API documentation.
- Create examples.
- Improve the dev server code altogether to make it more plugabble.
- Allow for per-view contexts that expand upon the global view context.
- Create a separate dev UI server command as an alternative to CLI commands.