私はWebアプリケーションを持っています。(クライアント側)javacriptは、メインエントリーポイントがapp.js
であるes6で書かれています。WebpackコードをlibraryTargetで分割する
jQueryのようなベンダーライブラリを外部から参照するか、バンドルに組み込むことができます(好みによってはwebpackを使用してバンドルできます)。それは、ブラウザで正しく動作させるためには、私はそうのようlibraryTarget
とlibrary
を指定する必要があります。
//snip
entry: {
"app.bundle": ["./app.js"],
},
output: {
path: path.join(__dirname, "wwwroot\\js"),
filename: "[name].js",
libraryTarget: "var",
library: "app"
}
//snip
は、しかし、私は私のベンダーライブラリが別途同梱持ってよう
を思います。 これはCommonsChunkPlugin
を使って行うことができますが、library*
のプロパティでもうまく動作しないようです。すなわち、私は最終的にの代わりにapp.jQuery
になります。
私のベンダーコードを分けて、アプリケーションコードをブラウザに正しく公開しながら適切なグローバルを提供するにはどうしたらいいですか?
ここwebpack.config
:
var path = require('path'),
webpack = require('webpack');
module.exports = {
context: path.join(__dirname, 'wwwroot'),
entry: {
"app.bundle": ['./js/app.js'],
"vendor.bundle": ['jquery', 'jquery-validation', 'jquery-validation-unobtrusive']
},
output: {
path: path.join(__dirname, 'wwwroot\\js'),
filename: '[name].js',
libraryTarget: 'var',
library: 'app'
},
module: {
loaders: [
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015', 'stage-0']
}
}
]
},
resolve: {
extensions: ['*', '.js']
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor.bundle',
minChunks: Infinity
}),
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
]
}
彼らは、外部に設けられていません。それらはバンドルされていますが、私はそれらをページ上の任意の別個のjsに利用可能にする必要があります。 私はそれが起こるようにそれを騒ぎました。エクスポーズローダーで、libraryTarget変数の再利用について心配することなく、私の悲しみを終わらせました – JamesT