Im in a project where we will create different sites using the same codebase.
I would like to have a brand style and config for each site which I specify somehow in my build process.
Anyone have an idea of the best way to achieve this ?
I would treat the different sites in much the same way I'd treat different environment (dev, test, prod). If there aren't a lot of changes, just use environment variables on each server where the site will run that define which site it is. Your code can then conditionally do things (e.g. add a class
site-x to the body for styling).
You can use something like dotenv to make setting environment vars easier (remember Windows does it differently to *NIX) if you're setting environments in a script. That way you're changing a file rather then actual environment variables when you want to test what a particular site looks like.
If there are many different config items that are different between sites then you can have multiple config files (
config-site-two.js) and a central
config.js file that returns the correct config based on some environment variable like
However if you actually want to package up the site to 'send' somewhere (?) then you could run your build command with a flag like
webpack blahblahblah --site=site-one.
You can use yargs to get that 'site' variable and use it in your build process however you like.