Webpack:从包中公开库

时间:2018-11-01 06:15:11

标签: javascript webpack bundle

假设我有2个入口点:loginmain。我想这是很普通的配置。

我正在使用Webpack 4,并通过splitChunks提取捆绑包common,其中两个入口点均引用了模块。 jQuery是其中一个模块(如捆绑分析器所示)。

所以最后我有3个脚本:login.jsmain.jscommon.bundle.js

我使用的expose-loader应该足够了,但是我在两个入口点都有这行:

import $ from 'jquery';
window.$ = $;
window.jQuery = $;

在我的HTML页面中,我使用以下布局(该代码几乎是伪的,例如):

<html>
    <head>
        <script src='common.bundle.js' />
        <script>console.log('head', Object.assign({}, window));</script>
        <script>
            ...some logic dependent on jQuery
        </script>
    </head>
    <body>
        <app />
        <script>console.log('before entry', Object.assign({}, window));</script>
        <script src='login.js' /> 
        <script>console.log('after entry', Object.assign({}, window));</script>
    </body>
</html>

页面加载后,window.$head中没有before entry,只有after entry

所以我猜想这个暴露的库只在入口点之后才可见,在某些情况下可能是很合逻辑的,但是在我看来,这是一个真正的痛苦...

那么,有什么主意,我怎么能在捆绑了捆绑包之后立即制作jQuery globar?

更新

添加此initial: ['jquery', 'angular'],作为入口点并在common.bundle.js之后立即引用它可以解决问题,但这似乎并不正确。

0 个答案:

没有答案