我有一个web应用程序,它的(客户端) javascript是用es6编写的,主要入口点是app.js。
我可以使用webpack将其捆绑在一起,可以在外部引用供应商库(如jQuery ),也可以将它们包含在包中--这取决于偏好。为了使它在浏览器中正确工作,我必须指定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而不是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'
})
]
}发布于 2017-07-07 13:30:45
如果您的jquery插件是外部提供的,并且您正在开发一个库,我建议使用externals而不是ProvidePlugin。这意味着在测试捆绑库时必须显式地提供jQuery。
外部性
externals: {
$: require.resolve('jquery'),
'window.$': require.resolve('jquery')
// ... and so on
}在您测试捆绑库的index.html中,我可以这样做:
<script src='jquery.min.js'></script>
<script src='myLibrary.min.js'></script>https://stackoverflow.com/questions/44953790
复制相似问题