Webpack 4: глобальная запись с именем файла динамического вывода

#javascript #webpack #webpack-4

#javascript #webpack #webpack-4

Вопрос:

Я пытаюсь выяснить, возможно ли установить динамические имена файлов из глобальных записей для выходных каталогов webpack.

Например

 entry: {
        'layout': glob.sync('./src/components/layout/**/*.js'),
        'sections': glob.sync('./src/components/sections/**/*.js'),
        'snippets': glob.sync('./src/components/snippets/**/*.js'),
},
output: {
        filename: './assets/bundle.[name].js',
        path: path.resolve(__dirname, 'dist'),
}
  

будет выводить

  • пакет.layout.js
  • bundle.sections.js
  • bundle.snippets.js

Возможно ли создать вывод, который вернет что-то вроде этого?

  • /layout/bundle.[filename].js
  • /sections/bundle.[filename].js
  • /фрагменты / пакет.[filename].js

Ответ №1:

Этот обходной путь сработал для того, что я пытался сделать. Вместо того, чтобы возиться с выводом, мы можем выполнить некоторые функции над записью.

 entry: glob.sync('./src/components/**/*.js').reduce((acc, path) => {
    const entry = path.replace(/^.*[\/]/, '').replace('.js','');
    acc[entry] = path;
    return acc;
  }, {}),