使jQuery-Mobile与webpack一起工作

我试图用webpack加载jquery-mobile。 但到目前为止没有运气。

这是我的jquery和jquery-mobile的webpack.config代码:

loaders: [ { test: /jquery.mobile.js$/, loader: "imports?define=>false,this=>window" }, resolve: { alias: { "jquery": "jquery/src/jquery", "jquery-mobile": "jquery-mobile/dist/jquery.mobile" }, }, plugins: [ new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "window.jQuery": "jquery" }), ] 

这是jquery.mobile文件中的函数,它会导致麻烦:

 (function ( root, doc, factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery" ], function ( $ ) { factory( $, root, doc ); return $.mobile; }); } else { // Browser globals factory( root.jQuery, root, doc ); } }( this, document, function ( jQuery, window, document, undefined ) { (function( $ ) { $.mobile = {}; }( jQuery )); 

问题是root.jQuery未定义。 在那个函数里面“这个”=“”窗口“,当我使用imports-loader注入这个=>窗口时,我检查了一下。

另一个奇怪的时刻:如果我将“this”替换为“window”,那样:

 }( window, document, function ( jQuery, window, document, undefined ) { 

一切都变好了。 但我无法修改jquery.mobile文件,这可能会在将来造成麻烦。

非常感谢任何帮助,谢谢!

以下需要imports-loader( npm install imports-loader --save

jQuery mobile希望this是全局上下文( window ):

 require("imports?this=>window!jquery-mobile/dist/jquery.mobile.js"); 

参考: https //webpack.github.io/docs/shimming-modules.html