1.0.30 • Published 4 years ago

@react-gn/react-gn v1.0.30

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

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

ArgumentDescription
\<name>A name for the new react application.

Options

OptionAliasDescriptionDefault
- -interactive-iWhen false, disables interactive mode.true
- -ts-When passed, adds setup for typescript in the new app.false
- -withRedux-wrWhen passed, adds setup for redux and redux thunk.false
- -ejected-eWhen 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

OptionAliasDescriptionDefault
- -interactive-iWhen false, disables interactive mode.true
- -ts-When passed, the component is created with typescript.false
- -path-pA target path for the new component../
- -dirName-A name for the new component directory.my-component
- -isClass-classCreate a class componentfalse
- -withRedux-wrSpecify whether to use redux or not.false
- -withHooks-whSpecify whether to use hooks or not.false
- -withState-wsSpecify whether to use state or not.false
- -withPropTypes-wptSpecify whether to use prop types or not.false
- -withCss-wcssSpecify whether to use css for styling or not.true
- -withLess-wlessSpecify whether to use LESS for styling or not.false
- -withSass-wsassSpecify whether to use SASS for styling or not.false
- -withStyledComponents-wscSpecify 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

OptionAliasDescriptionDefault
- -interactive-iWhen false, disables interactive mode.true
- -template-tTemplate directory name../
- -path-pA 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.

1.0.30

4 years ago

1.0.29

4 years ago

1.0.28

4 years ago

1.0.27

4 years ago

1.0.26

4 years ago

1.0.25

4 years ago

1.0.24

4 years ago

1.0.23

4 years ago

1.0.22

4 years ago

1.0.21

4 years ago

1.0.20

4 years ago

1.0.19

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago