Опция динамической библиотеки с несколькими точками входа

Я нахожу пример опции webpack с несколькими точками ввода и UMD

Вот пример webpack.config.js в следующем примере:

var path = require("path");
module.exports = {
    entry: {
        alpha: "./alpha",
        beta: "./beta"
    },
    output: {
        path: path.join(__dirname, "js"),
        filename: "MyLibrary.[name].js",
        library: ["MyLibrary", "[name]"],
        libraryTarget: "umd"
    }
}

Мой вопрос заключается в том, как динамически конфигурировать filename и library. Я хочу:

  • filename для ввода alpha a.js
  • filename для ввода beta b.js
  • library для записи alpha как alpha
  • library для входа beta как beta.

Итак, мне интересно, могу ли я настроить эти параметры через function следующим образом:

var path = require("path");
module.exports = {
    entry: {
        alpha: "./alpha",
        beta: "./beta"
    },
    output: {
        path: path.join(__dirname, "js"),
        filename: function(entryKey, entryValue) {
            if (entryKey === 'alpha') return 'a.js';
            if (entryKey === 'beta') return 'b.js';
        },
        library: function(entryKey, entryValue) {
            if (entryKey === 'alpha') return 'Alpha';
            if (entryKey === 'beta') return 'Beta';
        },
        libraryTarget: "umd"
    }
}

Ответ 1

Из webpack 3.1.0 вы можете экспортировать несколько конфигураций из webpack.config.js

Таким образом, вы можете попробовать следующее:

  module.exports = [
    {
      entry: "./alpha",
      output: {
          path: path.join(__dirname, "js"),
          filename: "a.js",
          library: "Alpha",
          libraryTarget: "umd"
      }
    },
    {
      entry: "./beta",
      output: {
          path: path.join(__dirname, "js"),
          filename: "b.js",
          library: "Beta",
          libraryTarget: "umd"
      }
    },

]

Связанные документы: Экспорт нескольких конфигураций

Ответ 2

Вы можете установить имя так

var path = require("path");
module.exports = {
    entry: {
        Alpha: "./alpha",
        Beta: "./beta"
    },
    output: {
        path: path.join(__dirname, "js"),
        filename: '[name].js',
        library: '[name]',
        libraryTarget: "umd"
    }
}