webpackを使用してtoastrを依存関係としてロードしてバンドルしようとしています。ここWebpack and toastr
は全体WebPACKの設定ファイルは、バンドルがエラーなしで作成され
として
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"
})
],
};
と私のエントリのjsファイルです。そして、出力バンドルを見ると、toastrスクリプトがバンドルに含まれていることがわかります。しかし、問題は、変数toastr
がブラウザウィンドウで利用できないということです。
私は同様の問題を探してみましたが、何も見つかりませんでした。これは、初めてwebpackを学ぼうとしています。どんな助けもありがとうございます。
この詳細な回答ありがとうございます。私はあなたが意味することを理解していると思います。 toastrモジュールは、バンドルされたスクリプト内でのみ利用可能であり、グローバル変数として公開されていません。トーストする必要があるものは、バンドルスクリプト内で実行する必要があります。しかし、私の場合はtoastrモジュールを実際にグローバルスコープで利用できるようにする必要があります。これは、ビューファイルのbodyタグにtoastrを使用してスクリプトタグを動的に挿入するASP.NETライブラリがあるためです。だから、私はtoastrをグローバルなスコープで常に利用可能な何らかの外部依存関係として使用しなければならないと思う。 –
これは一般的にWebpackのアプローチです。しかし、グローバルを必要とする古いWebサイトをWebpackに変換する場合、必要な値の一部を公開する可能性があります。しかし一般的には、可能な限り、グローバルを避けてバンドル内に保持する必要があります。 –
あなたは正しいです。私は古いウェブサイトを変換する途中にあります。この場合、グローバル変数としてtoastrを公開するオプションはありませんでした。助けていただきありがとうございます。私は今この問題を解決しました。 –