javascript - 使用 webpack 处理具有外部依赖项的 AMD 库

标签 javascript amd webpack

我有一个以 AMD 风格编写的库,可以与 RequireJS 一起使用。 jqueryjquery-ui 假定由库的用户提供。说它看起来像这样:

// main-lib.js
define(['jquery', './aux-lib.js'], function ($) { ..(1).. });

// aux-lib.js
define(['jquery', 'jquery-ui'], function ($) { ..(2).. });

我正在尝试弄清楚 webpack 是如何工作的。例如,假设我想将这些文件捆绑到一个 AMD 样式库文件中,该文件仍然采用外部的 jqueryjquery-ui:

// out.js
define(['jquery', 'jquery-ui'], function ($) { ..(1)..(2).. } );

这是如何实现的?

当我使用 main-lib.js 作为 entry 点运行 webpack 时,它会提示找不到 jquery 并且jquery-ui。如果我使用 resolve.alias 配置正确的路径,它会将 jqueryjquery-ui 捆绑到 out.js ,这不是我想要的。我尝试使用 output.externals 但没有成功。

最佳答案

这对我来说是一个非常简单、愚蠢的错误。相关字段不是output.externals,而只是externals。请参阅here 。引入的另外两个相关字段位于 output 内部,但 externals 不在内部。

PS:externals 也可以是数组。这是我当前的配置:

{
    entry: './main-lib.js',
    output: {
        path: './',
        filename: 'out.js',
        libraryTarget: 'amd'
    },
    externals: ['jquery', 'jquery-ui']
}

它运行得很好。

关于javascript - 使用 webpack 处理具有外部依赖项的 AMD 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25627235/

相关文章:

javascript - jQueryUI ThemeRoller 样式未在打印版本中显示

javascript - 基于html属性的动态jquery选择器

javascript - AngularJS 和 i18next

typescript - 在 TypeScript 中使用 “export =” 导出的引用模块

javascript - 如何在 webpack 输出的不同入口点共享同一个类的实例

javascript - 仅在悬停一段时间后显示菜单项

javascript - 如何从 Dojo 的构建系统中排除文件?

javascript - 如何使用 requirejs 包含第 3 方脚本

performance - lerna 构建非常慢,总是(+30 分钟)

javascript - Webpack 'vue-loader' 编译问题与 '@vue/compiler-sfc'