如何在 webback 配置中等待一段代码?

Tho*_*ggi 2 promise async-await webpack

我有一个返回一组 webpack 的 async 函数entries,我想使用 async / awaitentry从函数中获取属性,但是由于webpack.config.js module.export一个普通对象,我无法执行任何顶级 await 并返回一个普通对象.

这就是我的意思:

const myFunc = require('./something');
const entry = await myFunc(__dirname);
module.exports = {
    entry,
    "mode": "development",
    "output": {
        "path": __dirname+'/static',
        "filename": "[name].[chunkhash:8].js"
    }
}
Run Code Online (Sandbox Code Playgroud)

我当然明白,顶级等待是不可能的,但是,我需要module.exportexport一个承诺,而不是这种平淡的对象。这在 webpack 中可能吗?

小智 6

您可以尝试使用 webpack 4。我相信您可以分配一个异步函数返回一个 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;
Run Code Online (Sandbox Code Playgroud)


Tho*_*ggi 0

我在 UNIX 中通过以下方式处理这个问题:

export ENTRY=$(yarn --silent ts-node ./riddance.run.ts ../LAST_STAND)
yarn webpack
Run Code Online (Sandbox Code Playgroud)

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

module.exports = {
    entry,
    "mode": "none",
    "output": {
        "path": __dirname+'/static',
        "filename": "[name]"
    }
}
Run Code Online (Sandbox Code Playgroud)