Skip to content

cspotcode/ink-on-reactcli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Experimental hack that allows using Ink components with ReactCLI and React.

See also: Ink is moving to React with their next version.
vadimdemedes/ink#90
mgrip/react-cli#10
mgrip/react-cli#8

The goal is to use things like MobX with pre-existing Ink components. MobX works with React, and thus with ReactCLI, but not with Ink, which is not built on top of React. However, ReactCLI does not have the rich selection of Components that have been built for Ink.

If we can trick third-party Ink components into running against React instead of Ink, then we can use them in our ReactCLI apps.

How?

We inject ourselves into node's require cache, replacing Ink's custom implementations of h (createElement) and Component. Third-party Ink components, and Ink's built-in Components, will run against these injections instead of Ink. With any luck, they'll behave like normal React components.

Example

Run the example via:

npm run example

Usage

  1. Install React and Ink as peer dependencies.
  2. Run the bootstrapper before Ink is require()d.
  3. Wrap all the Ink components you want to use.
  4. Run the UI via ReactCLI() from "react-cli-renderer."
import {bootstrap, wrapInkComponent} from 'ink-on-reactcli';
import ReactCLI from 'react-cli-renderer';
import _InkSpinner from 'ink-spinner';
const InkSpinner = wrapInkComponent(_InkSpinner);
class MyAppUI extends React.Component {
    render() {
        return <Section><InkSpinner /></Section>;
    }
}
ReactCLI(<MyAppUI />);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published