# babel-plugin-s2s-redux-actions-reducers-manager

> manage redux actions reducers

Latest version **0.0.1** (published 2017-11-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install babel-plugin-s2s-redux-actions-reducers-manager
pnpm add babel-plugin-s2s-redux-actions-reducers-manager
yarn add babel-plugin-s2s-redux-actions-reducers-manager
bun add babel-plugin-s2s-redux-actions-reducers-manager
```

## 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.0.1 |
| Published | 2017-11-24 |
| First published | 2017-11-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=6 |
| Dependencies | 7 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | progted |

## Links

- npm: https://www.npmjs.com/package/babel-plugin-s2s-redux-actions-reducers-manager
- npm.io page: https://npm.io/package/babel-plugin-s2s-redux-actions-reducers-manager

## Dependencies (7)

- [globby](https://npm.io/package/globby.md) ^7.0.0
- [s2s-utils](https://npm.io/package/s2s-utils.md) ^0.4.2
- [babel-file](https://npm.io/package/babel-file.md) ^1.0.2
- [babel-types](https://npm.io/package/babel-types.md) ^6.26.0
- [babel-generator](https://npm.io/package/babel-generator.md) ^6.26.0
- [babel-preset-es2015](https://npm.io/package/babel-preset-es2015.md) ^6.24.1
- [babel-plugin-syntax-object-rest-spread](https://npm.io/package/babel-plugin-syntax-object-rest-spread.md) ^6.13.0

## Recent versions

- 0.0.1 (latest) — 2017-11-24

## README

# babel-plugin-s2s-redux-actions-reducers-manager

> manage redux actions reducers

## Install

```
$ yarn add --dev babel-plugin-s2s-redux-actions-reducers-manager
```

## Dependency

This plugin is dependent on babel-plugin-s2s-action-builders, babel-plugin-s2s-redux-actions-reducers and babel-plugin-s2s-redux-actions-reducers-root.

Please prepare these plugins before using this plugin.

[https://github.com/cndlhvn/babel-plugin-s2s-action-builders](https://github.com/cndlhvn/babel-plugin-s2s-action-builders)

[https://github.com/cndlhvn/plugin-s2s-redux-actions-reducers](https://github.com/cndlhvn/plugin-s2s-redux-actions-reducers)

[https://github.com/cndlhvn/babel-plugin-s2s-redux-actions-reducers-root](https://github.com/cndlhvn/babel-plugin-s2s-redux-actions-reducers-root)

## Solve object rest spread
This plugin generates code containing "object rest spread" from ast. \
At that time, an error occurs in babel 6.

Looking at the code of s2s.config.js, other plugins can solve it by handling s2s-handler-babel-object-rest-spread. \
This plugin adopted a more tricky method and could not be solved from s2s handler.

However, the solution is simple. \
First, install babel-plugin-syntax-object-rest-spread.

```
yarn add --dev babel-plugin-syntax-object-rest-spread
```

Next, create a `.babelrc` file and write it.

```js
{
  "plugins": ["syntax-object-rest-spread"]
}
```

## s2s.config.js

s2s-redux-actions-reducers-manager plugin watch the `src/builders/*.js` files.

```js
const handlerBabelSpread = require('s2s-handler-babel-object-rest-spread').default

module.exports = {
  watch: './**/*.js',
  plugins: [
    {
      test: /src\/reducers\/(?!.*index).*\.js/,
      handler: handlerBabelSpread,
      plugin: ['s2s-redux-actions-reducers',{autocomplete: false}]
    },
    {
      test: /src\/reducers\/(?!.*index).*\.js/,
      output: "index.js",
      handler: handlerBabelSpread,
      plugin: ['s2s-redux-actions-reducers-root',
      { input: 'src/reducers/*.js', output: "src/reducers/index.js",router: true }]
    },
    {
      test: /src\/builders\/.*\.js/,
      plugin: ['s2s-redux-actions-reducers-manager',
      { input: 'src/builders/*.js', output: "src/reducers/*.js" }]
    }
  ],
  templates: [
    {
      test: /src\/reducers\/.*\.js/, input: 'reducer.js'
    }
  ]
}
```
## Start s2s

Start the s2s with yarn command

```
yarn run s2s
```

## Usage

#### When create a builder file

When you create a `src/builders/*.js`, this plugin creates `src/reducers/*.js` as a same name. \
For example, you create a `src/builders/user.js`, then it creates a `src/reducers/user.js`

#### Write action name

#### In:

In the builder file, write action name with camelcase such as `getPokemonRequest` and save it.

`src/builders/pokemon.js`
```js
getPokemonRequest
```

It will be expanded like this.

#### Out:

`src/builders/pokemon.js`
```js
let getPokemonRequest;
let getPokemonSuccess;
let getPokemonFailure;
```

`src/reducers/pokemon.js`
```js
import { handleActions } from "redux-actions";
import * as actions from "../actions";

const initialState = {};

export default handleActions(
  {
    [actions.getPokemonRequest]: (state, action) => ({
      ...state
    }),
    [actions.getPokemonSuccess]: (state, action) => ({
      ...state
    }),
    [actions.getPokemonFailure]: (state, action) => ({
      ...state
    })
  },
  initialState
);
```

#### Remove action name

If you remove the "action name" written in the `src/builders/*.js` file, "action name" is removed from the file with the same name in `src/reducers/`.

# Test

This plugin has two test files. \
First is babel plugin main test file named `test.js` on root directory. \
Next is a `test/index.js` that will be transformed by the plugin.

Run this command.

` npm run test`

Test will run and you can see what happen.

If you modify the target javascript source code, please change the `test/index.js`.

---
_Source: https://npm.io/package/babel-plugin-s2s-redux-actions-reducers-manager · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
