Как мержить конифиги, в которых есть Promise, с помощью webpack-merge?

Здравствуйте!

Есть два webpack конфига: dev и prod. Они мержатся с common конфигом с помощью webpack-merge

Webpack 2

Сокрщаенно:
webpack.dev.js
const webpackMerge = require('webpack-merge'); 
const commonConfig = require('./webpack.common.js');

const config = {
    ...
};

module.exports = function (options) {
    return webpackMerge(commonConfig({env: ENV}), config);
}


Сокрщаенно:
webpack.common.js
const config = {
    ...
};
let pages = new Array();
let promise = new Promise((resolve, reject) => {
    fs.readdir('./src/templates', function (err, files) {
        files
            .filter(function(file) { return file.substr(-4) === '.ejs'; })
            .forEach(function (file) {
                pages.push({
                    name: file.replace('.ejs', '.html'),
                    template: './src/templates/' + file
                });
            });
        resolve(pages);
    });
});

promise.then(result => {

    result.forEach(function (page) {
        config.plugins.push(
            new HtmlWebpackPlugin({
                template: page.template,
                filename: page.name,
                inject: 'body',
                chunksSortMode: 'dependency',
                minify: false
            })
        );
    });

    module.exports = function (options) {
        return config;
    };
});


Собственно понятно, что получаем ошибку TypeError: commonConfig is not a function.
Фишка в том, что даже если не делать мердж, а просто в webpack.dev.js отдавать конфиг после resolve промиса, то вебпак это не воспринимает, говорит нет output.
Может можно как-то заставить ждать webpack или webpack-merge?
Буду очень признателен советам.
  • Вопрос задан
  • 447 просмотров
Пригласить эксперта
Ответы на вопрос 1
qtuz
@qtuz
Только если написать nodejs-скрипт запускающий компилятор webpack, когда промис зарезолвится. Но проще всего сканировать директорию синхронно, например через glob.sync. Делал так не на одном проекте и проблем не возникает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 мая 2024, в 11:52
2500 руб./за проект
17 мая 2024, в 11:43
5000 руб./за проект
17 мая 2024, в 11:41
15000 руб./за проект