npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

reagent-cli

v2.1.0

Published

CLI for creating components within React-application built with Create-React-App (and not only)

Downloads

2

Readme

Reagent

An CLI for creating components, containers, redux sections and another things from variety user templates within React-application built with Create-React-App (and not only).

reagent means REAct-GENerator-Templates that actually stands for generating React entities from templates.

reagent strives to be an easily embeddable and beautiful command line interface for Node.js in goal to reduce creating components, containers or custom boilerplates in your React application.

reagent allows you quickly

  • create essences from inner templates
  • define your own templates
  • eject all inner templates for modification and farther using

Installation

$ npm install --save-dev reagent-cli

or if you want to install it globally

$ npm install -g reagent-cli

Note For using it in development mode you can just clone this repository and create virtual link as shown below:

$ git clone https://github.com/daminort/reagent-cli.git
$ cd reagent-cli
$ npm link

Then you will be allowed to use reagent as globally installed package. To remove it simply type

$ cd reagent-cli
$ npm unlink

This will remove package from your system but not cloned folder

Usage

If reagent is installed as dev-dependency of your project you can type

$ npx reagent create

or if reagent is installed globally

$ reagent create

Commands (brief overview)

| Command | Alias | Options | Description | |---------|-------|---------|-------------| |create|new| |Creating component, container, redux section or anything else from user defined templates in current working directory| |eject| | |Ejecting inner templates into current working directory| |current| | |Set absolute path to current working directory as path to folder with user defined templates| |path| |pathname|Set absolute path to defined directory as path to folder with user defined templates| |clear| | |Removing path to user defined temlates from config of reagent| |info| | on/off |Toogle showing information about created files and folders|

Commands Documentation

create | new

The create command has two levels of questions to user:

  • Type of template
  • Template parameters

In the section Type of template you can choose one of the following options:

  • user defined template (if you have it)
  • component
  • container
  • redux section

In the section Template parameters you have to answer next questions:

  • Template Name: you can choose needed template from the list of available ones
  • Name: it will be used for naming target folder and replacing template name within copied files
  • Location: a relative path from current working directory. Content of template will be copied into the pointed folder. If target folder doesn't exist, it will be created
  • Checking and confirmation chosen options

Notice that come types of templates has default value for location:

  • component: src/components
  • container: src/containers
  • redux section: src/redux

But, of course, you can use any location up to you

Usage:

$ reagent create
$ reagent new

eject

The eject command allows you to derive all inner teplates in current working directory in folder templates.

This folder will content templates and configuration file config.json with descriptions of templates.

It can be useful as an example to create your own templates.

During ejection target path is saving to config of reagent as path to user defined templates. You can rewrite it later.

Usage:

$ reagent eject

current

The current command allows you to define path to folder with user defined templates which is current working directory

Usage:

$ reagent current

path

The path command does the same things as command current but you have to pass the absolute path to folder with user defined templates

Usage:

$ reagent path /home/daminort/reagent-templates

clear

The clear command allows you to define path to folder with user defined templates which is current working directory

Usage:

$ reagent clear

info

The info command allows you to handle whether an information about created files and folder be shown in console

Usage:

$ reagent info on
$ reagent info off

Inner templates

reagent has some inner predefined templates. Among them:

Components

  • Functional component
  • Functional component (with styled wrapper)
  • Class-based component
  • Class-based component (with styled wrapper)

Containers

  • Functional container (with connecting to Redux)
  • Functional container (with connecting to Redux and styled wrapper)
  • Class-based container (with connecting to Redux)
  • Class-based container (with connecting to Redux and styled wrapper)

Redux Section

  • Redux actions + Reducer
  • Redux actions + Immutable reducer
  • Redux actions + Reducer + Saga
  • Redux actions + Immutable reducer + Saga

All of these templates you can find in templates folder

Using template example

For example, let's create simple functional component Button. To do it you can type

$ cd my-project
$ reagent create

and then pass the next answers:

Type          : Simply reusable component
Template Name : Functional component
Name          : Button
Location      : src/components (by default)

After that you will get the folder structure like this:

my-project
...
└── src
    └── components
        ├── Button.js
        └── index.js

and the files will content the next code:

index.js

import Button from './Button';

export default Button;

Button.js

import React from 'react';
import PropTypes from 'prop-types';

const Button = ({ id }) => {

  return (
    <div id={id}>
      There is some content
    </div>
  );
};

Button.propTypes = {
  id : PropTypes.string,
};

Button.defaultProps = {
  id : 'id',
};

export default Button;

User defined templates

reagent allows you define and use your own templates. To do this you have to make some steps:

  • create folder with your templates
  • create file config.json within this folder
  • go to the template folder and run reagent current
  • enjoy :)

A structure of config.json must be like this:

{
  "templates": [
    {
      "type": "MyButton",
      "description": "Awesome Button",
      "path": "MyButton",
      "rename": true
    }, {
      "type": "HelloWorld",
      "description": "Real HelloWorld Project boilerplate",
      "path": "HelloWorld",
      "rename": false
    }
  ]
}

Template description fields mean:

  • type: an uniq identifier of your template
  • description: some reasonable description. You will see it in the questions
  • path: relative path to template. Don't add ./ before it
  • rename: a flag that defines if rename files of template and names within them in according to entered Name

You can get an example of config.json by command reagent eject

Change Log

  • 2019-02-11, v2.1.0: Added plugin inquirer-fuzzy-path to simplify path input. Minor bug fix
  • 2019-02-08, v2.0.0: Full refactoring project structure, added new setting option showInfo
  • 2019-02-06, v1.0.0: Project is finished with necessary features

License

Reagent is open source software licensed as MIT.