# create-react-template

> Create templates for react and redux.

Latest version **0.3.0** (published 2017-08-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install create-react-template
pnpm add create-react-template
yarn add create-react-template
bun add create-react-template
```

Provides the command `create-react-template`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.3.0 |
| Published | 2017-08-07 |
| First published | 2017-01-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=6 |
| Dependencies | 4 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | about_hiroppy |
| Keywords | react, redux, template |

## Links

- npm: https://www.npmjs.com/package/create-react-template
- Repository: https://github.com/abouthiroppy/create-react-template
- Homepage: https://github.com/abouthiroppy/create-react-template#readme
- Issues: https://github.com/abouthiroppy/create-react-template/issues
- npm.io page: https://npm.io/package/create-react-template

## Dependencies (4)

- [chalk](https://npm.io/package/chalk.md) ^1.1.3
- [fs-extra](https://npm.io/package/fs-extra.md) ^2.0.0
- [inquirer](https://npm.io/package/inquirer.md) ^3.0.1
- [handlebars](https://npm.io/package/handlebars.md) ^4.0.10

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 0.3.0 (latest) — 2017-08-07
- 0.2.0 — 2017-03-15
- 0.1.0 — 2017-02-28
- 0.0.1 — 2017-01-27

## README

# create-react-template

Create various templates.

<!-- travis https://travis-ci.org/ -->
<!-- appveyor https://ci.appveyor.com -->
<!-- codecov https://codecov.io/gh -->
<!-- npm version badge: https://badge.fury.io/ -->

## Install
```
$ npm install create-react-template
```

## Usage
```
$ create-react-template
```

## Templates
- Container Component
- Presentational Component
- Store
- Middleware

### Container
```javascript
import { connect } from 'react-redux';

const mapStateToProps = (state) => ({});

const mapDispatchToProps = (dispatch) => ({
  updateName: (name) => dispatch(actions.updateName(name))
});

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(/* component's name */);
```

### Component
Create `index.js`, `Component.js`, `style.css`(optional).

#### index.js
```javascript
export default from './Componet';
```

#### style.css
```css
.container {
}
```

#### Component(stateless)
```javascript
import React from 'react';
import styles from './style.css';

const Component = (props) => (
  <div className={styles.container}>
  </div>
);

export default Component;
```

#### Component
```javascript
import React from 'react';
import styles from './style.css';

class Component extends React.Component {
  constructor() {
    super();

    this.state = {};
  }

  render() {
    return (
      <div className={styles.container}>
      </div>
    );
  }
}

export default Component;
```

### Middleware
```javascript
const middleware = (store) => (next) => (action) => {
};

export default middleware;
```

### Store
You can select redux-saga and redux-devtools.

Create `configureStore.js`, `configureStore.dev.js`, `configureStore.prod.js`.

#### configureStore.js
```javascript
import configureStoreDev from './configureStore.dev';
import configureStoreProd from './configureStore.prod';

const configureStore = process.env.NODE_ENV !== 'production' ?
  configureStoreDev :
  configureStoreProd;

export default configureStore;
```

#### configureStore.dev.js
```javascript
import { createStore, applyMiddleware, compose } from 'redux';
import createSaga from 'redux-saga';
import rootReducer from '../reducers';
import mySaga from '../sagas';

const saga = createSaga();

const createEnhancer = () => {
  const appliedMiddlewares = applyMiddleware(
    saga
  );

  const reduxDevtoolsExtensionsCompose
    = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;

  if (reduxDevtoolsExtensionsCompose) {
    const devtoolsExtensionCompose = reduxDevtoolsExtensionsCompose({
      actionsBlacklist: []
    });

    return compose(devtoolsExtensionCompose(appliedMiddlewares));
  }
  else {
    return compose(appliedMiddlewares);
  }
};

const configureStore = (initialState) => {
  const enhancer = createEnhancer();
  const store = createStore(rootReducer, initialState, enhancer);

  saga.run(mySaga);
  return store;
};

export default configureStore;
```

#### configureStore.prod.js
```javascript
import { createStore, applyMiddleware, compose } from 'redux';
import createSaga from 'redux-saga';
import rootReducer from '../reducers';
import mySaga from '../sagas';

const saga = createSaga();

const enhancer = compose(applyMiddleware(
  saga
));

const configureStore = (initialState) => {
  const store = createStore(rootReducer, initialState, enhancer);

  saga.run(mySaga);
  return store;
};

export default configureStore;
```

---
_Source: https://npm.io/package/create-react-template · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
