ris is the Rispa CLI command line utility that allows you to create  project structure, manage plugins & run generators.

What's Rispa?

Rispa is a simple project management solution with a powerful command-line utility JavaScript applications. It's organized as a mono repository with a plain interface for integration and the specification for creating your own plug-ins. Projects can be different, such as frontend or backend applications. Rispa is based on a modular infrastructure and organized as the plug-ins that can be re-used for various projects.



Getting started


Install it once globally:
yarn global add @rispa/cli
npm install -g @rispa/cli
You will need to have Node >= 7.10 on your machine.

Creating project

To create project, run:
ris new project-name
cd project-name
It will create a directory called project-name inside the current run folder.
Inside that directory, it will generate the initial project structure and install the selected plugins:
rispa.json - is an entry point of RISPA project, it contains information of current project.


Development mode
To create project in development mode, run:
ris new --mode=dev
Project will be generated without Subtree usage.

Managing plugins

ris add

To add plugins, run inside project directory:
ris add rispa-eslint-config
It will add plugin with name rispa-eslint-config in current run project.
If you want browse and select plugins to install, run:
ris add
It will display available plugins, press space to select plugin to installation, finally press enter to install selected plugins.
If you want add plugin via git url, run:
ris add git:https://github.com/rispa-io/rispa-core.git
It will add plugin with name rispa-core via git url in current run project.

ris update

To update installed plugins, run inside project directory:
ris update
It will pull changes in all installed plugins in current run project.
The pull changes works through the git interface.

ris remove

To remove plugin, run inside project directory:
ris remove plugin-name
It will remove plugin with name plugins-name from current run project.
Plugin remove is an unsafe operation, because, it doesn't make changes to the client code and requires corrections by user.

ris assemble

To assemble plugins, run inside project directory:
ris assemble
It will install not installed plugins from rispa.json.

Launch plugin script

ris run or ris

To launch plugin script, run inside project directory:
ris run @rispa/core lint
It will launch script lint in plugin with name @rispa/core.

ris run all or ris all

To launch script in all plugins, run inside project directory:
ris run all lint
It will launch script lint in all installed plugins.


For force use Yarn or not, run for example:
ris run all lint --yarn=true
For skip plugins, run for example:
ris run all lint --skip=@rispa/ui-kit,feature-plugin

Launch generator

ris g

To launch plugin generator, run inside project directory:
ris g core generator-name
It will launch generator with the name generator-name of package core in current run project.


ris commit

To commit project or plugins changes, run inside project directory:
ris commit
It will get project changes and ask you enter commit message and then it will push the current branch.


ris numerate

To numerate project changes, run inside project directory:
ris numerate
It will scan project tags and display available versions.


To see the full details of an error, run CLI with ENV:
DEBUG=rispa:* ris new

Start your project

Create your first project using RISPA or create your own plug-in for the project structure. All this is not dependent on what kind of framework you want to use.

Rispa Team

Senior front-end developer in CSSSR, with great experience in architecture, development and team leading. Through the years of software design and development, he has come up with an innovative concept of RISPA. He has personally coordinated the development process, came up with main features, coded them and reviewed the code of contributors.
If you would like to invite one of the developers
for the lecture, please write to
Special thanks for Islam Vindizhev, Artyom Resh, Felix Exter, Sergey Golovin.