@telus-uds/tools-palette-schema

Palette schema and validator

Usage no npm install needed!

<script type="module">
  import telusUdsToolsPaletteSchema from 'https://cdn.skypack.dev/@telus-uds/tools-palette-schema';
</script>

README

palette-schema

Validates palettes and builds them into artifacts that can be consumed by various platforms

Usage

CLI

The easiest way to build a palette is with the CLI command:

  1. Install:

    npm install --save-dev @telus-uds/tools-palette-schema
    
  2. Add a npm run script to your package.json:

    {
      // ...
      scripts: {
        "build": "tools-palette-schema build [PATH_TO_YOUR_PALETTE.JSON]"
      }
    }
    
  3. Build the palette:

    npm run build
    

CLI Options

$ tools-palette-schema build --help

build.js build [palette]

builds the palette

Positionals:
  palette  palette JSON file to build          [default: "./build/palette.json"]

Options:
      --help      Show help                                            [boolean]
      --version   Show version number                                  [boolean]
  -p, --platform  platforms to build, all if omitted                     [array]
  -c, --config    override style-dictionary config file

By default, all platforms are included in the build. To specify certain platforms, use the --platform option:

tools-palette-schema build --platform ios --platform android

To specify a different palette JSON file:

tools-palette-schema build ./path/to/palette.json

To override the default style-dictionary config (can be javascript or json):

tools-palette-schema build --config ./path/to/config.js

API

The package can also be imported directly in node.js:

const {build, validate, config} = require('@telus-uds/tools-palette-schema')

build({palettePath: 'path/to/palette.json})

The API exports the following function and objects:

build({configPath, platforms, palettePath})

Validates and builds a palette JSON file.

option description
configPath path to the style-dictionary config file, uses default config if not set
platforms array of platforms to build (as defined in the config), builds all platforms if not set
palettePath path to the palette json file, defaults to ./build/palette.json

validate(palette)

Validates a palette object synchronously and returns a boolean indicating if the palette is valid. The errors property of the function is assigned the errors (or null if there were none) from the last validation attempt. Refer to the ajv docs.

parameter description
palette palette object

config

Default style-dictionary config. This may be useful for overriding certain config values for a custom build.

Tests

The package contains several unit tests:

npm test