# @hugorper/excel-2-jsonschema

> Utility module which generates JSON Schema from Excel Spread sheet

Latest version **0.4.2** (published 2018-06-06) · MIT license · 0 weekly downloads

## Install

```sh
npm install @hugorper/excel-2-jsonschema
pnpm add @hugorper/excel-2-jsonschema
yarn add @hugorper/excel-2-jsonschema
bun add @hugorper/excel-2-jsonschema
```

Provides the command `excel-2-jsonschema`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.2 |
| Published | 2018-06-06 |
| First published | 2018-06-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 7 |
| Unpacked size | 94.1 KB |
| Known vulnerabilities | 0 (+5 in 1 direct dependencies) |
| Install scripts | no |
| Author | hugorper |
| Maintainers | hugorper |
| Keywords | JSON, Schema, Generate, RAML, API, CLI, Excel, CSV, XLS, xlsx, Spreadsheet |

## Links

- npm: https://www.npmjs.com/package/@hugorper/excel-2-jsonschema
- Repository: https://github.com/hugorper/excel-2-jsonschema
- Homepage: https://github.com/hugorper/excel-2-jsonschema#readme
- Issues: https://github.com/hugorper/excel-2-jsonschema/issues
- npm.io page: https://npm.io/package/@hugorper/excel-2-jsonschema

## Dependencies (7)

- [xlsx](https://npm.io/package/xlsx.md) ^0.8.0
- [chalk](https://npm.io/package/chalk.md) ^1.1.3
- [lodash](https://npm.io/package/lodash.md) ^4.13.1
- [fs-extra](https://npm.io/package/fs-extra.md) ^0.30.0
- [jsonfile](https://npm.io/package/jsonfile.md) ^2.3.1
- [commander](https://npm.io/package/commander.md) ^2.9.0
- [child-process](https://npm.io/package/child-process.md) ^1.0.2

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 0.4.2 (latest) — 2018-06-06
- 0.4.0 — 2018-06-06
- 0.3.6 — 2018-06-06
- 0.3.1 — 2018-06-06
- 0.3.0 — 2018-06-06

## README

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
[![Dependency Status](https://tidelift.com/badges/github/hugorper/excel-2-jsonschema)](https://tidelift.com/badges/github/hugorper/excel-2-jsonschema) [![Build Status](https://travis-ci.org/hugorper/excel-2-jsonschema.svg?branch=master)](https://travis-ci.org/hugorper/excel-2-jsonschema)

# A tool to generate JSON Schema files from Excel Sheet

## Why

 [JSON Schema](http://json-schema.org/) creation is difficult, especially for non-technical people. Excel is widely used and proves to be a good tool for defining schema

## Excel-2-jsonschema CLI tool?

The **excel-2-jsonschema** CLI tool, allows to generate [JSON Schema](http://json-schema.org/) from Excel Sheet table.

## Excel Table (input)

|Name|Property|Type|Description|
|----|--------|----|------------|
|Hotel|Id|string|Hotel unique identifier.|
|Hotel|description|string|Hotel description.|
|Hotel|displayName|string|Display name of hotel.|
|Hotel|capacity|string|Capacity of the hotel, ex: 44 people.|
|Hotel|image|string|Image URL representing the hotel.|

## JSON Schema (output)

```json
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "hotel",
    "description": "hotel",
    "type": "object",
    "properties": {
        "id": {
            "description": "Hotel unique identifier.",
            "type": "string"
        },
        "description": {
            "description": "Hotel description.",
            "type": "string"
        },
        "displayName": {
            "description": "Display name of hotel.",
            "type": "string"
        },
        "capacity": {
            "description": "Capacity of the hotel, ex: 44 people.",
            "type": "string"
        },
        "image": {
            "description": "Image URL representing the hotel.",
            "type": "string"
        }
    },
    "required": []
}
```

## CLI Tool (global mode)

### CLI install

```npm install -g hugorper/excel-2-jsonschema```

### CLI Usage

```
How to Execute (with default args -e -v):
  excel-2-jsonschema -i ./sample.xls -s Schema -o ./dist 

Usage: excel-2-jsonschema [options]
  Options:
  -i, --inputExcelFile <inputExcelFile>  'File Localtion' which contains Schema definations
  -s, --sheetName <sheetName>            'Sheet Name' which contains Schema definations
  -o, --outputDir <outputDir>            'Output Directory' where JSON Schema files should be generated## Install
  -e, --embedded <embedded>              'Embedded' If embedded Schema should be generated (default: false)
  -v, --versionSchema <versionSchema>'    Contains Schema version (default: http://json-schema.org/draft-07/schema#)
```

## Developer 

### Install

```npm install hugorper/excel-2-jsonschema --save-dev```

### Usage

Generate schemas.

```js
const generateJSONSchema = require('generate-json-schema');
const path = require('path');

var options = {
    inputExcelFile: path.join(__dirname, 'example/sample.xlsx'),
    outputDir: path.join(__dirname, 'dist'),
    sheetName: 'Schema',
    embedded: false,
    versionSchema: 'http://json-schema.org/draft-07/schema#'  
};


generateJSONSchema(options.inputExcelFile, options.sheetName, options.outputDir, options.embedded, options.versionSchema);
```

Generate json example files.

```js
const generateJSONExample = require('./src/generate-json-example');
const path = require('path');

var options = {
    inputExcelFile: path.join(__dirname, 'example/sample.xlsx'),
    outputDir: path.join(__dirname, 'dist'),
    sheetName: 'Schema'  
};

generateJSONExample(options.inputExcelFile, options.sheetName, options.outputDir);
```

## List Gulp Tasks 

* clean: clean all output files
* schema: Use generate json
* example: Run example json output
* build: Build project
* lint: execute lint

For more informations about npm run-script, go to _scripts_ of file _package.json_.

## Excel sample files

* [sample.xlsx](https://github.com/hugorper/excel-2-jsonschema/tree/master/example/sample.xlsx)
* [advanced-sample.xlsx](https://github.com/hugorper/excel-2-jsonschema/tree/master/example/advanced-sample.xlsx)

---
_Source: https://npm.io/package/@hugorper/excel-2-jsonschema · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
