从数组动态创建Webpack 5

bf1o4zei  于 2023-11-19  发布在  Webpack
关注(0)|答案(1)|浏览(180)

我想在webpack.config.js中添加Webpack 5数组中的其他条目。下面是数组:

  1. const unitTest = [ { name: 'bootloader' }, { name: 'levenshtein' } ]

字符串
我编写了以下代码来追加数组中的其他条目。

  1. entry: {
  2. main: ['./src/js/index.js'],
  3. ...unitTests.map((test) => {
  4. let newEntry ={};
  5. newEntry[`${test.name}`] = [`./src/unit-test/${test.name}/index.js`];
  6. return newEntry;
  7. }),
  8. },


问题是map()函数返回一个数组,我的条目变成了这样:

  1. {
  2. '0': { bootloader: [ './src/unit-test/bootloader/index.js' ] },
  3. '1': { levenshtein: [ './src/unit-test/levenshtein/index.js' ] },
  4. main: [ './src/js/index.js' ],
  5. }


当然,Webpack并不高兴。我不知道如何正确地将新字段追加到entry对象?

hujrc8aj

hujrc8aj1#

一种方法是使用reduce()而不是使用map()来获得您想要的结果。类似于:

  1. const unitTests = [ { name: 'bootloader' }, { name: 'levenshtein' } ];
  2. const entries = unitTests.reduce((acc, test) => {
  3. acc[`${test.name}`] = [`./src/unit-test/${test.name}/index.js`];
  4. return acc;
  5. }, {});
  6. module.exports = {
  7. entry: {
  8. main: ['./src/js/index.js'],
  9. ...entries
  10. },
  11. // other webpack configs
  12. };

字符串

  1. const unitTests = [ { name: 'bootloader' }, { name: 'levenshtein' } ]
  2. const entries = unitTests.reduce((acc, test) => {
  3. acc[`${test.name}`] = [`./src/unit-test/${test.name}/index.js`];
  4. return acc;
  5. }, {});
  6. const entry = {
  7. main: ['./src/js/index.js'],
  8. ...entries,
  9. };
  10. console.log(entry);

展开查看全部

相关问题