Ich versuche, toastr als eine Abhängigkeit mit Webpack zu laden und zu bündeln.Webpack und toastr
hier ist die gesamte webpack Konfigurationsdatei
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var webpack = require('webpack');
const DEVELOPMENT = process.env.NODE_ENV === 'development';
const PRODUCTION = process.env.NODE_ENV === 'production';
module.exports = {
entry: {
main: './wwwroot/js/mainEntry.js',
vendor: ['jquery', 'tether',
'bootstrap', 'jquery-colorbox',
'jquery-confirm', 'jquery-validation',
'jquery-validation-unobtrusive',
'toastr', 'jquery.nicescroll',]
},
output: {
filename: '/js/[name].js',
path: path.resolve(__dirname, 'wwwroot'),
},
module: {
rules: [
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
},
{
test: /\.(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
loader: 'file-loader?name=[name].[ext]&publicPath=/fonts/&outputPath=/fonts/'
},
{
test: /\.(png|jpe?g|gif|ico)$/,
loader: 'file-loader?name=[name].[ext]&publicPath=/images/&outputPath=/images/'
}
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
// (the commons chunk name)
filename: "/js/vendor.js",
// (the filename of the commons chunk)
minChunks: 2,
}),
new ExtractTextPlugin({
filename: 'css/[name].min.css'
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
],
};
und mein Eintrag js Datei als
Das Bündel ohne Fehler erstellt wird. Und ich kann sehen, dass das Toastr-Skript im Bündel enthalten ist, wenn ich das Ausgabebündel ansehe. Aber das Problem ist, dass die Variable toastr
nicht im Browserfenster verfügbar ist.
Ich habe versucht, nach einem ähnlichen Problem suchen, konnte aber keine finden. Dies ist das erste Mal, dass ich versuche, ein Webpack zu lernen. Jede Hilfe wird geschätzt.
Vielen Dank für diese detaillierte Antwort. Ich glaube ich verstehe was du meinst. Das Toastr-Modul ist nur innerhalb des gebündelten Skripts verfügbar und wird nicht als globale Variable verfügbar gemacht. Alles, was ich mit toastr tun muss, muss innerhalb des Bundle-Skripts erfolgen. Aber in meinem Fall muss das Toastr-Modul tatsächlich im globalen Gültigkeitsbereich verfügbar sein, da es eine ASP.NET-Bibliothek gibt, die ein Skript-Tag mit toastr in das body-Tag der Ansichtsdateien dynamisch einfügt (server-gerendert). Also, ich denke, ich werde Toastr als eine Art externe Abhängigkeit verwenden müssen, die immer im globalen Umfang verfügbar ist. –
Richtig, das ist in der Regel der Webpack-Ansatz. Wenn Sie jedoch eine alte Website, die globale Variablen erfordert, in Webpack konvertieren, haben Sie immer noch die Möglichkeit, einige der benötigten Werte verfügbar zu machen. Aber im Allgemeinen sollten Sie Globals vermeiden und wenn möglich innerhalb des Bündels behalten. –
Sie haben Recht. Ich bin gerade dabei, eine alte Website zu konvertieren, und in diesem Fall hatte ich keine andere Wahl, als toastr als globale Variable aufzuführen. Danke für deine Hilfe. Ich habe dieses Problem jetzt gelöst. –