# Exporter Configuration

An exporter can be configured in many ways, both in terms of its description/metadata and behavior. All exporter configuration is done through modifications to `exporter.json` file located in the package root.

This is an example of `exporter.json` taken from the Flutter Exporter:

```
{
    "id": "io.supernova.html-preview",
    "name": "HTML Preview",
    "description": "Exporter for visual preview of design system elements, effectively generating static HTML documentation",
    "source_dir": "src",
    "version": "1.0.0",
    "tags": [
        "HTML",
        "CSS",
        "Preview"
    ],
    "author": "Jiri Trecak",
    "organization": "Supernova",
    "homepage": "https://supernova.io",
    "config": {
        "output": "output.json",
        "sources": "sources.json",
        "js": "src/js/helpers.js"
    },
    "engines": {
        "pulsar": "1.0.0",
        "supernova": "1.0.0"
    },
    "contributes": {
        "configuration": [{
            "default": true,
            "key": "generateColors",
            "label": "Generate color list page",
            "type": "boolean"
        }, {
            "default": true,
            "key": "generateBorders",
            "label": "Generate border list page",
            "type": "boolean"
        }]
    }
}

```

### Exporter Store Information

Following is the list of all keys you can use to configure your exporter in terms of how others see it:

#### **id (required)**

Unique exporter identifier. Using [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation) is recommended. When publishing to [Exporter Store,](https://supernova-developers.gitbook.io/supernova-dsm/using-exporters/exporter-store) the package must always have a unique identifier not present in the store already, unless you are uploading an update to an existing package.

#### **name (required)**

Name of the exporter. We recommend some nice, memorable name. You don't have to put the platform into the name, because you have `tags` for the same purpose. Never name your exporter as `[X] exporter` - the "exporter" part is in many cases added by the system which results in `Flutter exporter exporter` :)&#x20;

#### **description (required)**

Exporter description. Describe what the exporter does, how people should use it, and anything you would like to state there. If you want to put contact where people can talk with you or do a bit of self-promotion in regards to the exporter, feel free to do that :) We believe people should take pride in their hard work.

{% hint style="info" %}
Currently, only multi-line plain text can be used. However, we are working on markdown description support, which will align with the release of our documentation system.
{% endhint %}

#### **author (optional)**

Name or nickname of the author or the company who created the exporter.

**organization (optional)**

Name of the organization which created the exporter. You can use author and organization together, or just one, or none if you want to remain anonymous, your choice.

**homepage (optional)**

Marketing URL you want others to visit when they land on the detail page of your exporter.

**tags (required)**

An array of tags that define your exporter. Some examples are `Flutter`, `tokens`,`styles`,`apple`,`android` and so on. Always, at minimum, put platform and usage tags. At a minimum, one tag is required otherwise `exporter.json` will not validate properly.

### Exporter Configuration

Following is the list of all keys you can use to configure exporter behavior:

#### **source\_dir (required)**

The directory from which all Pulsar blueprints are loaded. `src` is recommended.

#### **version (required)**

The semantic version of the current version of the exporter, written as `major.minor.patch`. Shorthand `major.minor` without patch information is also allowed.

#### **config (required)**

Contains three possible keys:

* `sources` - URL to the source configuration file, must be a valid path to JSON file&#x20;
* `output` - URL to the output configuration file, must be a valid path to the JSON file
* `js` - URL to the javascript helper file, must be a valid path to the JS file

`sources` and `output` are recommended, while `js` is optional.

#### **engines (required)**

Contains two possible keys:

* `pulsar` - Language version to use. For now, only `1.0`&#x20;
* `supernova` - SDK version to use. For now, only `1.0`

Both keys are required.

**contributes (optional)**

Exporter contribution point that allows you to do advanced things, such as expose exporter configuration and have Supernova build UI for it. Please refer to [contribution point documentation](https://supernova-developers.gitbook.io/supernova-dsm/building-exporters/creating-new-exporter/contribution-point) for details.

{% hint style="danger" %}
Please note that **we are constantly reviewing the quality of the exporters**. You should always avoid publishing exporters with offensive names, descriptions, or content, otherwise, we will remove it from the exporter store. Multiple offenses will result in the permanent removal of the user account from the platform.

We strive to **build a lovely,** [**living community** ](https://community.supernova.io)**that tries to push the limits of what is possible with design systems and code generation** and offenses against it will not be tolerated.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://supernova-developers.gitbook.io/supernova-dsm/building-exporters/creating-new-exporter/exporter-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
