Tüm JavaScript dosyaları / kodları için bundle.js ve jQuery ve React gibi tüm kütüphaneler için vendle.js - iki giriş noktası oluşturduğum uygulamamda Webpack kullanıyorum. Bağımlılıkları olarak jQuery olan eklentileri kullanmak için ne yapmalıyım ve bunları vendors.js'de de kullanmak istiyorum? Bu eklentilerin birden fazla bağımlılığı varsa ne olur?
Şu anda burada bu jQuery eklentisini kullanmaya çalışıyorum - https://github.com/mbklein/jquery-elastic . Webpack belgelerinde, Plugin ve ithalat yükleyiciden bahsedilmektedir . ProvidPlugin kullandım, ancak yine de jQuery nesnesi mevcut değil. Webpack.config.js dosyam şöyle görünüyor:
var webpack = require('webpack');
var bower_dir = __dirname + '/bower_components';
var node_dir = __dirname + '/node_modules';
var lib_dir = __dirname + '/public/js/libs';
var config = {
addVendor: function (name, path) {
this.resolve.alias[name] = path;
this.module.noParse.push(new RegExp(path));
},
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jquery: "jQuery",
"window.jQuery": "jquery"
}),
new webpack.optimize.CommonsChunkPlugin('vendors', 'vendors.js', Infinity)
],
entry: {
app: ['./public/js/main.js'],
vendors: ['react','jquery']
},
resolve: {
alias: {
'jquery': node_dir + '/jquery/dist/jquery.js',
'jquery.elastic': lib_dir + '/jquery.elastic.source.js'
}
},
output: {
path: './public/js',
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, loader: 'jsx-loader' },
{ test: /\.jquery.elastic.js$/, loader: 'imports-loader' }
]
}
};
config.addVendor('react', bower_dir + '/react/react.min.js');
config.addVendor('jquery', node_dir + '/jquery/dist/jquery.js');
config.addVendor('jquery.elastic', lib_dir +'/jquery.elastic.source.js');
module.exports = config;
Ancak buna rağmen, tarayıcı konsolunda hala bir hata atıyor:
Yakalanmayan ReferenceError: jQuery tanımlanmamış
Benzer şekilde, ithalat yükleyiciyi kullandığımda bir hata veriyor,
ihtiyaç tanımlanmadı '
bu satırda:
var jQuery = require("jquery")
Ancak, vendors.js dosyama eklemediğimde aynı eklentiyi kullanabilirim ve bunun yerine, diğer AMD kod dosyalarımı nasıl eklediğimi,
define(
[
'jquery',
'react',
'../../common-functions',
'../../libs/jquery.elastic.source'
],function($,React,commonFunctions){
$("#myInput").elastic() //It works
});
Ama bu yapmak istediğim şey değil, çünkü bu jquery.elastic.source.js'nin bundle.js'deki JavaScript kodumla birlikte verildiği ve tüm jQuery eklentilerimin vendors.js paketinde olmasını istediğim anlamına geliyor. Peki bunu nasıl başarabilirim?