我有一个用AMD风格编写的库,可以和RequireJS一起使用。假定jquery
和jquery-ui
由库的用户提供。说它看起来像这样:
// main-lib.js
define(['jquery', './aux-lib.js'], function ($) { ..(1).. });
// aux-lib.js
define(['jquery', 'jquery-ui'], function ($) { ..(2).. });
我试图找出webpack的工作原理。例如,假设我想将这些文件捆绑到一个仍然从外部假设jquery
和jquery-ui
的AMD样式库文件中:
// out.js
define(['jquery', 'jquery-ui'], function ($) { ..(1)..(2).. } );
这是如何完成的?
当我使用main-lib.js
作为entry
点运行webpack时,它会抱怨它无法找到jquery
和jquery-ui
。如果我使用resolve.alias
配置正确的路径,则会将jquery
和jquery-ui
捆绑到out.js
,这不是我想要的。我尝试使用output.externals
无济于事。
答案 0 :(得分:1)
这对我来说是一个非常简单,愚蠢的错误。相关字段不是output.externals
,而只是externals
。见here。引入的其他两个相关字段位于output
内,但externals
不是。
PS:externals
也可以是数组。这是我目前的配置:
{
entry: './main-lib.js',
output: {
path: './',
filename: 'out.js',
libraryTarget: 'amd'
},
externals: ['jquery', 'jquery-ui']
}
它工作得非常好。