首页 > 解决方案 > webpack libraryTarget 'umd' 应该与 ES6 模块一起使用吗?

问题描述

我正在尝试使用 webpack 分发基于节点的库。我已经看到周围的大多数 js 库都可以用于:

commonJs 语法

const lib = require('library')

或 ES6 语法

import * as lib from "library"

我已按照本教程进行操作,最终的 webpack.config.js 如下所示:

var path = require('path');

module.exports = {
    entry: './index.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'sepa.js',
        library: 'sepajs',
        libraryExport: 'default',
        libraryTarget: 'umd',
        umdNamedDefine: true,
        globalObject: "typeof self !== 'undefined' ? self : this"
    }
};

尽管在浏览器上这个 import 语句会导致一个空模块:

  import * as SepaJs from "./sepa.js"

webpack 是否假设将基于 commonJs 的库导出到 ES6 模块库?我应该用 babel 转编译它吗?我可以拥有一个包含两个模块解决方案的捆绑文件吗?

标签: javascriptwebpackbabeljs

解决方案


推荐阅读