💫 Merge one or more configuration files together with environment variables too.
npm install config-webpack-plugin --save-dev
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'
])
]
}
-
The
config-webpack-plugin
will merge all specified configuration file contents from right to left, thus creating a ‘merged configuration’. -
If the ‘merged configuration’ contains a
key
matching a current environment variable then the relatedvalue
will be replaced by the environment variable's value. -
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’.
const ConfigPlugin = require('config-webpack-plugin');
module.exports = {
plugins: [
new ConfigPlugin('./config.js')
]
}
const ConfigPlugin = require('config-webpack-plugin');
module.exports = {
plugins: [
new ConfigPlugin([
'./config.js',
'./config.local.js'
])
]
}
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,
}
No.
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:
- Fork this repo.
- Clone your forked repo.
- Create a feature branch with:
git checkout develop; git checkout -b feature/<name-of-feature>
. - Create a pull request to be merged into
develop
branch.
💁 Please, do not submit PR to be merged into
master
branch.
- Add test. Please!
- Add CI. Please!
- Support multiple file (
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 (why not?).
💁 Do you want to suggest a feature? Add a suggestion.