Webpack4を使用してjQueryプラグインをインラインJavaScriptにアクセスできるようにしようとしています。
PluginProvider
を使用して、jQueryを自分のWebサイトで利用できるようにしています。
_ plugins: [
new webpack.ProvidePlugin({
"$": "jquery",
"jQuery": "jquery"
}),
],
_
これは正常に機能しており、バンドルを含む任意のページからjQueryにアクセスできます。
次の内容の_vendor.js
_というバンドルを作成して、 bootstrap-datepicker を追加しようとしました。
_import 'bootstrap-datepicker';
_
_vendor.js
_バンドル内から$('input').datepicker()
を呼び出すことはできますが、インライン_<script>
_を使用して呼び出すと、次のようになります。
_Uncaught TypeError: $(...).datepicker is not a function
_
_bootstrap-datepicker
_をグローバルスコープで使用できるようにWebpack 4を構成するにはどうすればよいですか?
[〜#〜]更新[〜#〜]
この問題を示すソースコードをここにアップロードしました: https://github.com/LondonAppDev/webpack-global-jquery-issue
問題は、2番目のバンドルインポートがdatpickerアドオンなしでjQueryを再追加していることであるようです。これを回避する方法はありますか?
私はこのタイプの問題で数ラウンド行って、 expose-loader で最も成功しました。 webpack構成で、次の公開ローダー構成を使用してjQueryのセクションを設定する必要があります。
{
test: require.resolve('jquery'),
use: [{
loader: 'expose-loader',
options: 'jQuery'
}, {
loader: 'expose-loader',
options: '$'
}]
},
同様のSO投稿がここにあります:
jqueryをwebpackにインポートする方法 (正規表現パターンが機能しませんでした)
jQueryをWebpackを使用して実際のWindowオブジェクトに公開します
Webpack 2のjqueryとbootstrapの読み込み、公開、バンドル
この構成を使用すると、他のいくつかの記事/投稿を見つけることができるはずです。これは、私がこれまでに正常に作業できるようになった唯一の記事です。
また、bootstrap 4はjQueryを内部的にロードまたは要求するようです。したがって、jQueryのインポート/要求とプラグインの後にインポートまたは要求を含めると、jQueryが再起動されて発生します。プラグインはスコープを失います。