具有多个入口点的动态库选项

zyy*_*259 13 webpack

我找到了一个带有多个入口点和UMD的webpack 库选项的示例

这是示例中的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"
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何配置filenamelibrary动态.我想要的是:

  • filename入境alphaa.js
  • filename入境betab.js
  • library入境alphaAlpha
  • library入境betaBeta.

所以我想知道我是否可以通过以下方式配置这些选项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"
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

从 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"
      }
    },

]
Run Code Online (Sandbox Code Playgroud)

相关文档:导出多个配置


Gab*_*e M 6

你可以像这样设置名称

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