我如何在weback config中等待一段代码?

时间:2018-12-31 22:26:15

标签: webpack promise async-await

我有一个异步函数,该函数返回一组webpack entries,我想使用async / await从函数中获取entry属性,但是由于webpack.config.js { {1}}的普通对象我无法执行任何顶级等待并返回普通对象。

这是我的意思:

module.export

我当然知道不可能进行顶层等待,但是,我需要const myFunc = require('./something'); const entry = await myFunc(__dirname); module.exports = { entry, "mode": "development", "output": { "path": __dirname+'/static', "filename": "[name].[chunkhash:8].js" } } module.export的诺言,而不是这个简单的对象。在webpack中可以吗?

3 个答案:

答案 0 :(得分:0)

我在UNIX中通过以下方式进行处理:

export ENTRY=$(yarn --silent ts-node ./riddance.run.ts ../LAST_STAND)
yarn webpack

const entry = JSON.parse(process.env.ENTRY);

module.exports = {
    entry,
    "mode": "none",
    "output": {
        "path": __dirname+'/static',
        "filename": "[name]"
    }
}

答案 1 :(得分:0)

您可以尝试使用webpack4。我相信您可以分配一个异步函数,将一个json对象返回给您module.exports而不是一个普通的json对象。尝试在webpack.config.js中添加以下代码

我正在使用webpack 4.1.1,对我来说很好用。

const doAsync = async () => {
  const myFunc = require('./something');
  const entry = await myFunc(__dirname);
  return {
    entry,
    'mode': 'none',
    'output': {
        'path': __dirname + '/static',
        'filename': '[name]'
    }
  };
};
module.exports = doAsync;

答案 2 :(得分:0)

roshan092 的回答几乎是完整的,对我来说,它适用于 doAsync 之后的调用,如下所示:

const doAsync = async () => {
  const myFunc = require('./something');
  const entry = await myFunc(__dirname);
  return {
    entry,
    'mode': 'none',
    'output': {
        'path': __dirname + '/static',
        'filename': '[name]'
    }
  };
};
module.exports = doAsync(); // here the invocation