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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@react-gn/react-gn

v1.0.30

Published

A CLI for developing react applications

Readme

react-gn CircleCI

A CLI for developing react applications.

Installation

react-gn can be installed globally:
npm i @react-gn/react-gn -g

Or with yarn:
yarn global add @react-gn/react-gn

new

Creates a new react application.

react-gn new <name> [options]
react-gn n <name> [options]

Farmers Market Finder Demo

Description

react-gn uses create-react-app under the hood, which you need to install globally in order to use the new command. You can see the current file structure of a new create-react-app here.

Arguments

| Argument | Description |
| ------------- | ------------- |
| <name> | A name for the new react application. |

Options

| Option | Alias | Description | Default |
| -------------- | ------ | ----------------------------------------- | ------- |
| - -interactive | -i | When false, disables interactive mode. | true |
| - -ts | - | When passed, adds setup for typescript in the new app. | false |
| - -withRedux | -wr | When passed, adds setup for redux and redux thunk. | false |
| - -ejected | -e | When passed, ejects the create-react-app. | false |

Demo

You can checkout the result from running the new command with typescript and redux options applied in the demos.

generate

Generates a new component.

react-gn generate [options]
react-gn g [options]

react-gn-generate

Description

Generates new components and applies different options (i.e. class or functional component, styling options, typescript, redux etc...).

Options

| Option | Alias | Description | Default |
| -------------- | ------ | ----------------------------------------- | ------- |
| - -interactive | -i | When false, disables interactive mode. | true |
| - -ts | - | When passed, the component is created with typescript. | false |
| - -path | -p | A target path for the new component. | ./ |
| - -dirName | - | A name for the new component directory. | my-component |
| - -isClass | -class | Create a class component | false | | - -withRedux | -wr | Specify whether to use redux or not. | false |
| - -withHooks | -wh | Specify whether to use hooks or not. | false |
| - -withState | -ws | Specify whether to use state or not. | false |
| - -withPropTypes | -wpt | Specify whether to use prop types or not. | false |
| - -withCss | -wcss | Specify whether to use css for styling or not. | true |
| - -withLess | -wless | Specify whether to use LESS for styling or not. | false |
| - -withSass | -wsass | Specify whether to use SASS for styling or not. | false |
| - -withStyledComponents | -wsc | Specify whether to use Styled Components for styling or not. | false |

Demo

You can checkout the result from running the generate command with some options applied in the demos.

template

Generates a new component based on a template.

react-gn template [options]
react-gn t [options]

react-gn-template

Description

Creation of new components can be customized using ejs templates.

Options

| Option | Alias | Description | Default |
| -------------- | ------ | ----------------------------------------- | ------- |
| - -interactive | -i | When false, disables interactive mode. | true |
| - -template | -t | Template directory name. | ./ |
| - -path | -p | A target path for the new component. | ./ |
| - -dirName | - | A name for the new component directory. | my-component |

Demo

Let's create a template for a container component. You can create a ./templates directory in your project and put the different templates there.

./templates/container/{Component}.jsx.ejs

import React, { Component } from "react";  
import { connect } from "react-redux";  
import "./<%= Component %>.css";  
import * as PropTypes from "prop-types";  
  
class <%= Component %> extends Component {  
 constructor(props) {
  super(props);
  this.state = <%= state %>;
 }
 render() {
  return (
    <div><%= Component %></div> 
  ); 
 }
}  
  
const mapDispatchToProps = dispatch => ({});  
  
const mapStateToProps = state => ({});  
  
<%= Component %>.propTypes = {  
 className: PropTypes.string
};  
  
export default connect(mapStateToProps, mapDispatchToProps)(<%= Component %>);  

./templates/container/{Component}.test.jsx

import React from 'react';  
import ReactDOM from 'react-dom';  
import <%= Component %> from './<%= Component %>';  
  
it('renders without crashing', () => {  
 const div = document.createElement('div');
 ReactDOM.render(<<%= Component %> />, div);
 ReactDOM.unmountComponentAtNode(div);
});  

./templates/container/{Component}.styles.css.ejs

.<%= Component %> {  
 color: red;
}  

Additionally you can create a data.json file which will contain data that will be used when rendering the templates. If this file is not provided the only data being passed to the templates will be the component name. In some cases if additional data is required (i.e. the initial state for a component etc...), you can create a data file:
./templates/container/data.json

{
  "state": {"count": 0}
}

By using the template command the templates will be rendered, inserting the component name and all additional data passed from data.json. Additionally {Component} from the template files name will be replace by the actual name provided in the command. When you initially start working with the template command, a good approach would be to copy and paste some of your existing components and convert them into ejs templates. Then you can use them when running the template command to create new components which are customized for your codebase.

You can checkout the result of running the template command in the demos.

Acknowledgements

react-gn would not be possible without the help from these existing projects:

Contributing

If something doesnt’t work, please file an issue.
PRs Welcome

License

react-gn is open source software licensed as MIT.