通过外部文件中的webpack.DefinePlugin设置变量 - 异步读取问题

时间:2018-05-28 10:43:12

标签: webpack web-config webpack-plugin

我在webpack.config.js文件中定义了两个变量,我想用外部文件中的值填充Web.config。对于这个外部文件,我有一个名为webconfig的npm包来解析变量并且它可以工作。 文件被解析为异步,因此问题在于正确创建module.exports。

sort_order

现在,已定义的属性将导出为“a”和“b”。 找不到如何从文件中导出已解析的属性。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

最后我开始工作了:

    module.exports = () => {
        let config = webconfig
            .compile({
                sources: [
                    __dirname + '/Web.config'
                ]
            });

        return config.then(data => {
            return {
//...
                plugins: [
                    new webpack.DefinePlugin({
                        __API_URL__: JSON.stringify(data.appSettings.__API_URL__),
                        __APP_URL__: JSON.stringify(data.appSettings.__APP_URL__)
                    })
                ]
            }
        });
    };

答案 1 :(得分:0)

我具有配置的层次结构,因此Promise到处都会支持异步Webpack调用

使用deasync

解决此问题
var webconfig = require("webconfig");

var result;
function getWebConfig() {
    webconfig
        .compile({
            sources: getConfigFilenames(),
        })
        .done(function (compiledWebConfig) {
            result = compiledWebConfig;
        });
}

getWebConfig();

while (result === undefined) {
    // Use sync call of async function
    require('deasync').runLoopOnce();
}
module.exports = result;