【问题标题】:Order require scripts / dependencies with laravel-mix and webpack使用 laravel-mix 和 webpack 订购需要脚本/依赖项
【发布时间】:2017-11-22 09:24:17
【问题描述】:

这是我的 /laravel/webpack.mix.js 的内容:

    mix
       .js([
            'resources/assets/js/jquery.js',
            'resources/assets/js/plugin.js'
           ], 'public/js/my_app.js');

/resources/assets/js/jquery.js的内容是:

window.$ = window.jQuery = require('jquery');

/resources/assets/js/plugin.js的内容就是这样写的本地代码:

(function($) { 

    // plugin script 

})(jQuery);

当plugin.js脚本在本地编写(如上),它在my_app.js中在jQuery之前加载(例如plugin.js em> 那么 jQuery)

但是

当我使用“require”或“import”指令直接从 node_modules**,比如require('plugin')用plugin.js写的,顺序OKjquery.js 首先加载 THEN plugin.js

我的问题:

我想在 plugin.js 之前加载 jquery.js。

那么,即使 plugin.js 是本地脚本,如何遵守命令?

【问题讨论】:

  • 有没有人能够解决这个问题,因为我在使用 Summernote 和 jquery 时遇到了同样的问题。

标签: node.js laravel webpack laravel-mix


【解决方案1】:

Laravel mix 提供了可以将供应商库提取到 vendor.js 的功能。但是您必须确保您的应用程序代码app.js 在您的vendor.js 之后被调用。

<script src="/js/manifest.js"></script>
<script src="/js/vendor.js"></script>
<script src="/js/app.js"></script>

参考 - https://laravel.com/docs/5.4/mix#vendor-extraction

【讨论】:

  • 感谢您的回答。但是当我尝试您的解决方案时,它告诉我 Bootstrap 需要 jQuery。我的提取顺序: .extract([ 'jquery', 'bootstrap-sass', 'jquery-ui', 'jquery-ui/ui/effect', 'jquery-ui/ui/widgets/autocomplete', 'jquery-ui /ui/widgets/datepicker'、'jquery-ui/ui/widgets/menu'、'tipsy/src/javascripts/jquery.tipsy'、])。与 HTML 视图的顺序相同
  • 我尝试使用 mix.autoload 和 mix.extract()。它解决了“引导需要 JQuery”的问题,但仍然存在主要问题:/
【解决方案2】:

在 .extract 调用之后,添加

autoload({
    jquery: ['$', 'jQuery', 'window.jQuery']
});

所以,

mix.js(...).extract(...).autoload(...);

编辑:刚刚看到您尝试过的回复

【讨论】:

  • 您好,谢谢您的回答 :),但正如我之前所说,我尝试使用 mix.autoload 和 mix.extract()。它解决了“引导程序需要 JQuery”问题,但仍然存在主要问题:/(本地脚本 VS 需要插件)。大声笑对不起,刚刚看到你看到我试过这个的回复:D
猜你喜欢
  • 1970-01-01
  • 2013-09-08
  • 2017-06-23
  • 2020-11-04
  • 2017-10-13
  • 2017-12-05
  • 2023-03-06
  • 2020-09-13
  • 2018-08-01
相关资源
最近更新 更多