Чтобы сохранить структуру, нужно для каждого набора entries указывать соответствующий output.path. Это возможно только если экспортировать массив из конфигов:
var path = require('path');
var glob = require('glob');
var files = glob.sync('./app/src/views/**/*.js');
var dirs = getDirs(files);
var configs = [];
for (var dirname in dirs) {
var files = dirs[dirname];
configs.push({
entry: getEntries(files),
output: {
path: dirname.replace('app/src/views', 'build'),
filename: '[name].js'
}
});
}
module.exports = configs;
function getDirs(files) {
var dirs = {};
files.forEach(function (file) {
var dirname = path.dirname(file);
if (!dirs[dirname]) {
dirs[dirname] = [];
}
dirs[dirname].push(file);
});
return dirs;
}
function getEntries(files) {
var entries = {};
files.forEach(function (file) {
var name = path.basename(file, path.extname(file));
entries[name] = file;
});
return entries;
}