This package has been deprecated

Author message:

wrong component

mono-components

2.0.0 • Public • Published

config-reducer

Utility for reduce configuration. One config file for development, test and production. Work with a webpack-merge.

example 1 (webpack):

{
  development: {
    stats: {
      colors: true,
      warnings: true,
    },
  },
  module: {
    rules: [
      {
        include: [paths.dir.app],
        use: [
          {
            loader: 'css-loader',
            options: {
              modules: true,
              development: {
                minimize: false,
              },
            }
          },
        ],
      },
    ],
  },
  plugins: [
    new Dotenv(config.dotenv),
    {development: () => {
      const HardSourceWebpackPlugin = require('hard-source-webpack-plugin')
      return [
        new HardSourceWebpackPlugin(),
      ]
    }},
    {production: () => [
      new webpack.optimize.OccurrenceOrderPlugin(),
      new webpack.HashedModuleIdsPlugin(),
    ]},
  ],
}

result for development:

{
  stats: {
    colors: true,
    warnings: true,
  },
  module: {
    rules: [
      {
        include: [paths.dir.app],
        use: [
          {
            loader: 'css-loader',
            options: {
              modules: true,
              minimize: false,
            }
          },
        ],
      },
    ],
  },
  plugins: [
    new Dotenv(config.dotenv),
    new HardSourceWebpackPlugin(),
  ],
}

example 2 (babel.config.js):

{
  presets: ['@babel/preset-env'],
  plugins: [
    [
      'emotion',
      {
        hoist: true,
        development: {
          sourceMap: true,
          hoist: false,
        },
      },
    ],

    'react-hot-loader/babel',
    { development: ['@babel/plugin-transform-react-jsx-source'] },
    {
      production: [
        'transform-react-remove-prop-types',
      ],
    },
  ],
}

result for production:

{
  presets: ['@babel/preset-env'],
  plugins: [
    [
      'emotion',
      {
        hoist: true,
      },
    ],

    'react-hot-loader/babel',
    'transform-react-remove-prop-types',
  ],
}

Installation

  yarn add config-reducer

Use

const configReducer = require('config-reducer')

const commonConfig = {
  development: {
    stats: {
      colors: true,
      warnings: true,
    },
  },
  // ....
}

const result = configReducer(commonConfig, process.env.NODE_ENV, [
  'development',
  'production',
])
module.exports = api => {
  const babelConfig = {
    presets: ['@babel/preset-env', '@babel/preset-react'],
    // ...
  }


  return configReducer(babelConfig, api.env(), [
    'development',
    'production',
    'test',
  ])
}

API and variants

configReducer(input, reducer, cleanup = true)

  • input - array/object
  • reducer - string
  • cleanup - boolean/string/array of string

Input examples:

[{ development: [] }]
[{ development: () => [] }]
{{ development: {} }}
{{ development: () => {} }}

TODO

  • array/object reducer
  • reducer in reducer / nested reducers
  • alias ex: test = _test

Readme

Keywords

Package Sidebar

Install

npm i mono-components

Weekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

5.12 kB

Total Files

3

Last publish

Collaborators

  • npm