npm package: @salesforce-ux/metadata-cli
Description: CLI tool for generating design system metadata
Latest version: 1.2.1

# Salesforce Design Systems Metadata CLI

A command-line tool for generating and managing metadata for Salesforce Design Systems (SLDS and SLDS Plus/Cosmos).

## Quick Start

### Using npx (Recommended)

```bash
# Generate all metadata types
npx @salesforce-ux/metadata-cli generate all

# Generate specific metadata types
npx @salesforce-ux/metadata-cli generate selectors-list styling-hooks

# Generate metadata with custom output directory and format
npx @salesforce-ux/metadata-cli generate all --output ./metadata --format csv
```

### Local Installation

```bash
# Install globally
npm install -g @salesforce-ux/metadata-cli
# or
yarn global add @salesforce-ux/metadata-cli

# Then use the command
metadata-cli generate all
```

## Features

- Generate comprehensive metadata for SLDS and SLDS Plus/Cosmos
- Multiple output formats (JSON, CSV, YAML)
- Support for custom output directories
- Interactive type selection when no types are specified
- Concurrent processing for faster generation

## Available Generator Types

The CLI supports the following metadata types:

| Type | Description |
|------|-------------|
| `selectors-list` | Generate SLDS and SLDS Plus class selectors |
| `styling-hooks` | Generate styling hooks metadata |
| `bem-naming-map` | Generate BEM naming conventions mapping |
| `lwc-to-slds-map` | Generate LWC to SLDS token mappings |
| `stylehooks-metadata` | Generate style hooks metadata |
| `aura-to-lwc-map` | Generate Aura to LWC token mappings |
| `icons` | Generate icon metadata |
| `color-styling-hooks` | Generate color styling hooks |
| `design-token-mappings` | Generate design token mappings |
| `slds-styling-hooks` | Generate SLDS styling hooks |
| `slds-delta` | Generate SLDS delta information |
| `slds-excluded-vars` | Generate SLDS excluded variables |

## Usage Examples

### Basic Usage

```bash
# Generate all metadata types
npx @salesforce-ux/metadata-cli generate all

# Generate specific types
npx @salesforce-ux/metadata-cli generate selectors-list styling-hooks

# Interactive type selection
npx @salesforce-ux/metadata-cli generate
```

### Custom Output Directory

```bash
# Generate to a specific directory
npx @salesforce-ux/metadata-cli generate all --output ./metadata

# Generate to a nested directory
npx @salesforce-ux/metadata-cli generate all --output ./src/generated/metadata
```

### Different Output Formats

```bash
# Generate as JSON (default)
npx @salesforce-ux/metadata-cli generate all --format json

# Generate as CSV
npx @salesforce-ux/metadata-cli generate all --format csv

# Generate as YAML
npx @salesforce-ux/metadata-cli generate all --format yaml
```

### Combining Options

```bash
# Generate specific types to a custom directory in CSV format
npx @salesforce-ux/metadata-cli generate selectors-list styling-hooks --output ./metadata --format csv

# Generate all types to a custom directory in YAML format
npx @salesforce-ux/metadata-cli generate all --output ./metadata --format yaml
```

## Command Reference

```bash
Usage: metadata-cli generate [options] [types...]

Generate design system metadata

Arguments:
  types                Types of metadata to generate. Use "all" for all types or specify one or more types

Options:
  -o, --output <path>  Output directory path. Defaults to current working directory
  -f, --format <format>  Output format (json, csv, yaml). Defaults to json
  -h, --help          Display help for command
```

## Requirements

- Node.js >= v18.0.0
- npm >= 6.0.0 or yarn >= 1.22.22

## Troubleshooting

### Common Issues

1. **Permission Errors**
   ```bash
   # If you encounter permission errors with npx, try:
   npx --no-install @salesforce-ux/metadata-cli generate all
   ```

2. **Output Directory Issues**
   ```bash
   # If the output directory doesn't exist, create it first:
   mkdir -p ./metadata
   npx @salesforce-ux/metadata-cli generate all --output ./metadata
   ```

3. **Format Issues**
   ```bash
   # If you get format errors, check the supported formats:
   npx @salesforce-ux/metadata-cli generate all --format json  # or csv, yaml
   ```

## Support

For issues, feature requests, or questions, please:
1. Check the [documentation](https://github.com/salesforce-ux/design-systems-metadata)
2. Open an issue in the GitHub repository
3. Contact the Salesforce Design Systems team