Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rmariuzzo/config-webpack-plugin
š« Merge one or more configuration files together with environment variables too.
https://github.com/rmariuzzo/config-webpack-plugin
configuration configuration-by-environment javascript webpack webpack-plugin
Last synced: 2 months ago
JSON representation
š« Merge one or more configuration files together with environment variables too.
- Host: GitHub
- URL: https://github.com/rmariuzzo/config-webpack-plugin
- Owner: rmariuzzo
- License: mit
- Created: 2016-08-06T05:50:26.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-08-20T20:44:44.000Z (over 8 years ago)
- Last Synced: 2024-10-11T07:10:34.993Z (3 months ago)
- Topics: configuration, configuration-by-environment, javascript, webpack, webpack-plugin
- Language: JavaScript
- Homepage:
- Size: 2.79 MB
- Stars: 18
- Watchers: 4
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# config-webpack-plugin
> š« Merge one or more configuration files together with environment variables too.
## Installation
```sh
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`:**
```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](https://github.com/rmariuzzo/config-webpack-plugin/raw/master/img/merging-config-files.png)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](https://github.com/rmariuzzo/config-webpack-plugin/raw/master/img/env-vars-replacement.png)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
```js
const ConfigPlugin = require('config-webpack-plugin');module.exports = {
plugins: [
new ConfigPlugin('./config.js')
]
}
```### Multiple configuration
```js
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:
```js
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/`.
4. Create a pull request **to be merged into `develop` branch**.> š Please, do not submit PR to be merged into `master` branch.
### Roadmap
- [x] [Add test. Please!](https://github.com/rmariuzzo/config-webpack-plugin/issues/4)
- [x] [Add CI. Please!](https://github.com/rmariuzzo/config-webpack-plugin/issues/5)
- [x] [Support multiple file](https://github.com/rmariuzzo/config-webpack-plugin/issues/2) (`new ConfigPlugin(['./config.default.js', '.config.local.js'])`).
- [ ] Support JSON file too ā„ļø, because they are prettiest for configuration.
- [ ] [Add a static website using GitHub Pages](https://github.com/rmariuzzo/config-webpack-plugin/issues/3) (why not?).> š Do you want to suggest a feature? [Add a suggestion](https://github.com/rmariuzzo/config-webpack-plugin/issues/new).