Skip to content

💫 Merge one or more configuration files together with environment variables too.

License

Notifications You must be signed in to change notification settings

rmariuzzo/config-webpack-plugin

Repository files navigation

config-webpack-plugin

💫 Merge one or more configuration files together with environment variables too.

Installation

npm install config-webpack-plugin --save-dev

How it works?

Let's say you have a base configuration file (./config.js) shared across your team. Now, you want for every developer to be able to override any configuration value without modifying the base configuration file. Therefore, every developer can create a local configuration file (./config.local.js). And… config-webpack-plugin will do the rest for you.

webpack.config.js:

const ConfigPlugin = require('config-webpack-plugin')

module.exports = {
    plugins: [
        new ConfigPlugin([
            './config.js',
            './config.local.js'
        ])
    ]
}
  1. The config-webpack-plugin will merge all specified configuration file contents from right to left, thus creating a ‘merged configuration’. Merging configuration files

  2. If the ‘merged configuration’ contains a key matching a current environment variable then the related value will be replaced by the environment variable's value. Environment variables replacements

  3. Finally, the config-webpack-plugin will intercept the ‘main configuration’ file (the first specified) during webpack's module resolution and will replace its source with the ‘merged configuration’.

Usage

Single configuration

const ConfigPlugin = require('config-webpack-plugin');

module.exports = {
    plugins: [
        new ConfigPlugin('./config.js')
    ]
}

Multiple configuration

const ConfigPlugin = require('config-webpack-plugin');

module.exports = {
    plugins: [
        new ConfigPlugin([
            './config.js',
            './config.local.js'
        ])
    ]
}

FAQ

What is a configuration file?

A module that export an object with key/value pairs that looks like:

module.exports = {
    API_BASE_URL: 'http://localhost/',
    NODE_ENV: 'development',
    AUTH_SPOOFED: true,
}

Does my configuration file gets modified?

No.

Development

If you want to collaborate with the development of config-webpack-plugin you need to have installed NodeJS 6 and Gulp. Then follow these instructions to make my life easier:

  1. Fork this repo.
  2. Clone your forked repo.
  3. Create a feature branch with: git checkout develop; git checkout -b feature/<name-of-feature>.
  4. Create a pull request to be merged into develop branch.

💁 Please, do not submit PR to be merged into master branch.

Roadmap

💁 Do you want to suggest a feature? Add a suggestion.