StyleDictionary.buildAllPlatforms() ⇒
style-dictionary
The only top-level method that needs to be called to build the Style Dictionary.
Example
const StyleDictionary = require('style-dictionary').extend('config.json');
StyleDictionary.buildAllPlatforms();
StyleDictionary.buildPlatform(platform) ⇒
style-dictionary
Takes a platform and performs all transforms to the properties object (non-mutative) then builds all the files and performs any actions. This is useful if you only want to build the artifacts of one platform to speed up the build process.
This method is also used internally in buildAllPlatforms to build each platform defined in the config.
Param | Type | Description |
---|---|---|
platform | String |
Name of the platform you want to build. |
Example
StyleDictionary.buildPlatform('web');
$ style-dictionary build --platform web
StyleDictionary.cleanAllPlatforms() ⇒
style-dictionary
Does the reverse of buildAllPlatforms by performing a clean on each platform. This removes all the files defined in the platform and calls the undo method on any actions.
StyleDictionary.cleanPlatform(platform) ⇒
style-dictionary
Takes a platform and performs all transforms to the properties object (non-mutative) then cleans all the files and perfoms the undo method of any actions.
Param | Type |
---|---|
platform | String |
StyleDictionary.exportPlatform(platform) ⇒
Object
Exports a properties object with applied platform transforms.
This is useful if you want to use a style dictionary in JS build tools like webpack.
Param | Type | Description |
---|---|---|
platform | String |
The platform to be exported. Must be defined on the style dictionary. |
StyleDictionary.extend(config) ⇒
style-dictionary
Create a Style Dictionary
Param | Type | Description |
---|---|---|
config | Config |
Configuration options to build your style dictionary. If you pass a string, it will be used as a path to a JSON config file. You can also pass an object with the configuration. |
Example
const StyleDictionary = require('style-dictionary').extend('config.json');
const StyleDictionary = require('style-dictionary').extend({
source: ['properties/*.json'],
platforms: {
scss: {
transformGroup: 'scss',
buildPath: 'build/',
files: [{
destination: 'variables.scss',
format: 'scss/variables'
}]
}
// ...
}
});
StyleDictionary.registerAction(action) ⇒
style-dictionary
Adds a custom action to the style property builder. Custom actions can do whatever you need, such as: copying files, base64'ing files, running other build scripts, etc. After you register a custom action, you then use that action in a platform your config.json
You can perform operations on files generated by the style dictionary as actions run after these files are generated. Actions are run sequentially, if you write synchronous code then it will block other actions, or if you use asynchronous code like Promises it will not block.
Param | Type | Description |
---|---|---|
action | Object |
|
action.name | String |
The name of the action |
action.do | function |
The action in the form of a function. |
[action.undo] | function |
A function that undoes the action. |
Example
StyleDictionary.registerAction({
name: 'copy_assets',
do: function(dictionary, config) {
console.log('Copying assets directory');
fs.copySync('assets', config.buildPath + 'assets');
},
undo: function(dictionary, config) {
console.log('Cleaning assets directory');
fs.removeSync(config.buildPath + 'assets');
}
});
StyleDictionary.registerFilter(filter) ⇒
style-dictionary
Add a custom filter to the style dictionary
Param | Type | Description |
---|---|---|
filter | Object |
|
filter.name | String |
Name of the filter to be referenced in your config.json |
filter.matcher | function |
Matcher function, return boolean if the property should be included. |
Example
StyleDictionary.registerFilter({
name: 'isColor',
matcher: function(prop) {
return prop.attributes.category === 'color';
}
})
StyleDictionary.registerFormat(format) ⇒
style-dictionary
Add a custom format to the style dictionary
Param | Type | Description |
---|---|---|
format | Object |
|
format.name | String |
Name of the format to be referenced in your config.json |
format.formatter | function |
Function to perform the format. Takes 2 arguments, dictionary and config Must return a string. Function is bound to its file object in the platform.files array. |
Example
StyleDictionary.registerFormat({
name: 'json',
formatter: function(dictionary, config) {
return JSON.stringify(dictionary.properties, null, 2);
}
})
StyleDictionary.registerTemplate(template) ⇒style-dictionary
Deprecated
Add a custom template to the Style Dictionary
Param | Type | Description |
---|---|---|
template | Object |
|
template.name | String |
The name of your template. You will refer to this in your config.json file. |
template.template | String |
Path to your lodash template |
Example
StyleDictionary.registerTemplate({
name: 'Swift/colors',
template: __dirname + '/templates/swift/colors.template'
});
StyleDictionary.registerTransform(transform) ⇒
style-dictionary
Add a custom transform to the Style Dictionary Transforms can manipulate a property's name, value, or attributes
Param | Type | Description |
---|---|---|
transform | Object |
Transform object |
transform.type | String |
Type of transform, can be: name, attribute, or value |
transform.name | String |
Name of the transformer (used by transformGroup to call a list of transforms). |
[transform.matcher] | function |
Matcher function, return boolean if transform should be applied. If you omit the matcher function, it will match all properties. |
transform.transformer | function |
Performs a transform on a property object, should return a string or object depending on the type. Will only update certain properties by which you can't mess up property objects on accident. |
Example
StyleDictionary.registerTransform({
name: 'time/seconds',
type: 'value',
matcher: function(prop) {
return prop.attributes.category === 'time';
},
transformer: function(prop) {
// Note the use of prop.original.value,
// before any transforms are performed, the build system
// clones the original property to the 'original' attribute.
return (parseInt(prop.original.value) / 1000).toString() + 's';
}
});
StyleDictionary.registerTransformGroup(transformGroup) ⇒
style-dictionary
Add a custom transformGroup to the Style Dictionary, which is a group of transforms.
Param | Type | Description |
---|---|---|
transformGroup | Object |
|
transformGroup.name | String |
Name of the transform group that will be referenced in config.json |
transformGroup.transforms | Array.<String> |
Array of strings that reference the name of transforms to be applied in order. Transforms must be defined and match the name or there will be an error at build time. |
Example
StyleDictionary.registerTransformGroup({
name: 'Swift',
transforms: [
'attribute/cti',
'size/pt',
'name/cti'
]
});