Skip to content

supermodel/supermodel

Repository files navigation

Supermodel npm packages CircleCI

Collection of npm packages supporting supermodel.io

Table of Contents

Introduction

TODO

Packages

@supermodel/cli README Version

Main package used for installing system wide binary supermodel for manipulating schemas

@supermodel/lib README Version

Collection of utils on top of json schema. Used in @supermodel/cli and on supermodel.io

@supermodel/file README Version

Utils for manipulating json schema on file system. Used in @supermodel/cli

Contributing

We are using lerna for managing all packages together

Installation

  1. yarn global add lerna@3.10 (npm i -g lerna@3.10) - to install orchstrating tool lerna

  2. yarn bootstrap - resolves and install root and packages dependencies

    • ⚠️ use this instead of yarn [install]
    • ensures presence of global installation of lerna and install it for you when missing
  3. 🤔 optional When developing against local supermodel.io instance setup .env for CLI. Choose symlink or copy:

    • symlink: ln -s ./packages/cli/.env.development ./packages/cli/.env
    • copy: cp ./packages/cli/.env.development ./packages/cli/.env and change variables for your needs

Usage

  • yarn build:watch
    • should be running while you want to use ./packages/cli/bin/supermodel or supermodel after yarn local:install
  • yarn test:watch - watch tests in all packages at once
  • yarn build - make production builds
  • yarn test - run lint, type checks and run tests in all packages at once
    • yarn test:lint - code linting
    • yarn test:types - type checks
    • yarn test:unit - unit tests

Local linking

To try @supermodel/cli locally with simple supermodel command we need to link all packages. There is shortcut to link all packages

  • yarn local:install
  • yarn local:uninstall

Principes

Every new module which manipulates with schemas (conversion, resolving, transforming etc.) or helps to work with schemas and environment around should be placed inside @supermodel/lib. Exposed modules for outside usage should return a value, or throw an error. Or promise analogy (resolve, reject) for async modules.

TODO

Publishing

lerna publish

  • useses lerna publish
  • It is most streightforward way to publish. It compile typescript with yarn build command, tag changed packages with new versions and publish it to npm

A Good API Project

supermodel.io, and supermodel CLI are Good API non-profit projects, aimed at promoting modern, reusable, and sustainable data modeling.

License

The MIT License (MIT) 2020 Good API