Javascript 从Webpack2.1.0升级到Webpack4.12.0破坏了我们的构建,为什么?
首先,我要说我是一个网页迷,所以非常感谢你的帮助 所以 我对Js捆绑包的布局是,我们有两个捆绑包:Javascript 从Webpack2.1.0升级到Webpack4.12.0破坏了我们的构建,为什么?,javascript,html,webpack,webpack-4,Javascript,Html,Webpack,Webpack 4,首先,我要说我是一个网页迷,所以非常感谢你的帮助 所以 我对Js捆绑包的布局是,我们有两个捆绑包: bundle.js tablesbundle.js bundle.js包含我们所有的页面标准javascript。 tablesbundle.js包含datatables.net库 现在,在我们的旧项目中,我们使用了Webpack2.1.0,我们所需要做的就是在布局文件中引用bundle.js,在需要使用datatables.net的任何页面上引用tablesbundle.js,然后在bundl
bundle.js
tablesbundle.js
bundle.js包含我们所有的页面标准javascript。
tablesbundle.js包含datatables.net库
现在,在我们的旧项目中,我们使用了Webpack2.1.0,我们所需要做的就是在布局文件中引用bundle.js,在需要使用datatables.net的任何页面上引用tablesbundle.js,然后在bundle.js中,任何调用来创建datatable的页面都可以正常工作
但是,在移动到webpack 4.12.0后,这将不再有效,它不会选择tablesbundle.js中的datatables initialiser方法,tablesbundle.js中唯一的代码是:
require("datatables.net");
现在,如果我将该行移到bundle.js中,它可以正常工作,但我们不希望每个页面上都有数据表,我们的捆绑js文件似乎没有在捆绑包之间进行通信,但在以前的版本中是这样的
如果有人能解释或帮助,那就太好了
--配置文件--
如果您可以共享webpack.config.js filedone@aseempadhya,那就更好了,因为它可能无法全局识别jquery。尝试添加ProviderPlugin@PlayMa256它确实能够全局识别Jquery,问题是我希望表包能够全局识别,但不能在每个页面上加载
module.exports = {
entry: {
bundle: "./Scripts/index.js",
libraries: './Scripts/libraries.js',
datatablesbundle: "./Scripts/tablesBundle.js"
},
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
],
},
{
test: /\.sass$|\.scss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {},
},
{ loader: 'postcss-loader' },
{ loader: 'sass-loader' },
],
},
{
test: /\.(jpg|png)$/,
use: 'file-loader?name=[path][name].[hash].[ext]'
}
],
},
plugins: getPlugins(),
output: {
path: BUILD_DIR,
filename: '[name].js'
},
//optimization: {
// splitChunks: {
// chunks: 'all'
// }
//},
resolve: {
modules: ["web_modules", "node_modules"],
alias: {
jquery: "jquery/src/jquery",
'picker': 'pickadate/lib/picker'
}
}
}
function getPlugins() {
var isProd = (process.env.NODE_ENV === 'production');
var plugins =
[
new MiniCssExtractPlugin({
filename: "[name].css"
}),
new webpack.ProvidePlugin({
"window.$": "jquery",
$: "jquery",
jQuery: "jquery",
Popper: "popper.js"
})
];
if (isProd) {
plugins.push(
new UglifyJSPlugin({
output: {
comments: false,
beautify: true,
sourceMap: true
}
}));
plugins.push(
new OptimizeCssAssetsPlugin({
assetNameRegExp: /\.(css|scss|sass)$/,
cssProcessorOptions: { discardComments: { removeAll: true } }
}));
}
return plugins;
}