After some small research I'm now using two mix config files which are included depending on environment variable and then switched inside custom webpack.config.js with modified Paths:
webpack.config.js
Paths.mix = () => {
return Paths.root(process.env.MIX_CONFIG);
};
package.json
"scripts": {
"admin-dev": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=admin.mix NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=webpack.config.js",
"admin-watch": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=admin.mix NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=webpack.config.js",
"admin-hot": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=admin.mix NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=webpack.config.js",
"admin-production": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=admin.mix NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=webpack.config.js",
"dev": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=frontend.mix NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=webpack.config.js",
"watch": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=frontend.mix NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=webpack.config.js",
"hot": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=frontend.mix NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=webpack.config.js",
"production": "node node_modules/cross-env/dist/bin/cross-env.js MIX_CONFIG=frontend.mix NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=webpack.config.js"
},
admin.mix.js (new config file instead of default webpack.mix.js)
mix
.setPublicPath(__dirname + '/public/assets/admin')
admin-layout.blade.php
<link rel="stylesheet" href="{{ mix('css/vendor.css', 'assets/admin') }}" />
frontend.mix.js (new config file instead of default webpack.mix.js)
mix
.setPublicPath(__dirname + '/public/assets/frontend')
frontend-layout.blade.php
<link rel="stylesheet" href="{{ mix('css/vendor.css', 'assets/frontend') }}" />