StyleZero

Explore

Documentation

Configuration Syntax

This document provides an overview of the configuration syntax for stylezero.json, the primary configuration file for the StyleZero framework.

This file allows you to define input/output directories, manage CSS and JavaScript inclusion, set breakpoints, and more.

Options




in_directory (Required)

The source directory where you write your templates.


out_directory (Required)

The destination directory for compiled templates.


extensions (Required)

A list of file extensions for template files.


css_file (Required)

The compiled global CSS file.


css_directory (Required)

The directory where compiled template-specific CSS files are stored.


js_directory (Required)

The directory where compiled template-specific JavaScript files are stored.


css_include (Required)

Defines how the template-specific CSS is included.


js_include (Required)

Defines how the template-specific JavaScript is included.


signal_file (Optional)

The file with the last compile timestamp.


signal_content (Optional)

Change the content of signal_file (allowed constants STYLEZERO_TIME and STYLEZERO_PATHS).


exclude (Optional)

A list of relative paths to exclude from the in_directory.


breakpoints (Optional)

Defines custom named breakpoints.


replacements (Optional)

Key-value pairs for replacing text in templates.


attributes (Optional)

Defines custom CSS attributes.


Example:

{
 "in_directory":"src",
 "out_directory":"dist",
 "extensions":[".html"],
 "css_file":"public/stylezero/stylezero.css",
 "css_directory":"public/stylezero",
 "js_directory":"public/stylezero",
 "css_include":"<link rel=\"stylesheet\" href=\"public/stylezero/STYLEZERO_ID.css\">",
 "js_include":"<script src=\"public/stylezero/STYLEZERO_ID.js\"></script>",
 "replacements":{
  "<stylezero:id>":"STYLEZERO_ID",
  "<stylezero:time>":"STYLEZERO_TIME",
  "<stylezero:css>":"STYLEZERO_CSS_INCLUDE",
  "<stylezero:js>":"STYLEZERO_JS_INCLUDE"
 },
 "breakpoints":{
  "@small-only":"0-640",
  "@medium-only":"641-1024",
  "@medium":"641",
  "@large":"1025"
 }
}

@import


You can import external dictionaries from json files, by using the special @import property.
The value must be a string or an array of strings with the files paths relative to your project's directory.
The data will be marged with the dictionary where the @import resides.

Example:

stylezero.json

"breakpoints": {
 "@import":"breakpoints.json"
}


breakpoints.json

{
 "@small-only":"0-640",
 "@medium-only":"641-1024",
 "@medium":"641",
 "@large":"1025"
}


To reload the data of the imported file you have to either save their parent or run the stylezero --reset config command.

Custom Attributes


The attributes property allows you to define custom CSS attribute mappings that can be used within your StyleZero declarations and inside the <style zero> tag.
This feature extends the framework’s capabilities by letting you introduce custom values or shorthand notations for standard CSS properties.


Creating a Custom Attribute


For example, suppose you want to define a shorthand value half, which translates to 50% in standard CSS.

You can declare this custom attribute like so:

"attributes": {
 "width:half":"width:50%"
}


With this configuration, any occurrence of width:half in your StyleZero code will be automatically converted to width:50% in the resulting CSS.


Advanced Declarations


You can also use regular expressions for more flexible and dynamic mappings.

"attributes": {
 "(width|height):half":"\\1:50%"
}


In this case, both width:half and height:half will be transformed into width:50% and height:50% respectively.

For even more advanced usage, you can perform sub-matching by using an array.
The first item is an array of dictionaries corresponding to captured groups, and the second is the output pattern.

"attributes": {
 "(width|height):(half|full)":[[null,null,{"half":"50","full":"100"}],"\\1:\\2%"]
}