如何禁用 webpack 4 代码拆分?

Posted

技术标签:

【中文标题】如何禁用 webpack 4 代码拆分?【英文标题】:How do I disable webpack 4 code splitting? 【发布时间】:2020-09-14 19:49:27 【问题描述】:

我正在使用 webpack 4.43.0。

如何防止在 webpack 中发生代码拆分?当我运行 webpack 时,所有这些文件都被创建 - 0.bundle.js11.bundle.js(以及预期的 bundle.js)。这是我的 webpack 配置:

/* eslint-env node */

const path = require('path');

module.exports = 
    entry: './media/js/src/main.jsx',
    mode: process.env.WEBPACK_SERVE ? 'development' : 'production',
    output: 
        path: path.resolve(__dirname, 'media/js'),
        filename: 'bundle.js'
    ,
    resolve: 
        extensions: ['*', '.js', '.jsx']
    ,
    module: 
        rules: [
            
                test: /\.(js|jsx)$/,
                include: path.resolve(__dirname, 'media/js/src'),
                exclude: /node_modules/,
                use: 
                    loader: 'babel-loader',
                    options: 
                        presets: ['@babel/preset-env', '@babel/preset-react']
                    
                
            
        ]
    
;

【问题讨论】:

尝试从扩展中删除'*' @AntoniSilvestrovič 感谢您的建议,但这并没有解决问题:paste.victor.computer/BkvcgXns8 你确定你没有加载一些其他的 webpack 配置吗?从我在这里看到的情况来看,它不应该进行代码拆分。如果没有,我会尝试重新安装 webpack。 @AntoniSilvestrovič 是的,我很确定。如果您想自己看一下,这是我的项目 - 请参阅 package.json。 github.com/ccnmtl/mediathread @nnyby 这是一个 React 应用吗? 【参考方案1】:

你可以使用webpack的LimitChunkCountPlugin来限制代码拆分产生的块数:

在您的webpack.config.js 文件中:

const webpack = require('webpack');   

module.exports = 
  plugins: [
    new webpack.optimize.LimitChunkCountPlugin(
      maxChunks: 1
    )
  ],
  ...
;

您也可以将pass the --optimize-max-chunks option 直接发送到webpack 命令。

所以,在您的package.json 文件中:


  "scripts": 
    "build": "webpack --optimize-max-chunks 1",
    ...
  ,
  ...

现在,当你运行 npm run build 时,webpack 将只构建一个文件(或“块”)。

【讨论】:

【参考方案2】:
// Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
build: 
  scopeHoisting: true,
  vueRouterMode: 'history', // available values: 'hash', 'history'
  showProgress: true,
  gzip: false,
  analyze: false,
  distDir: 'dist',
  productName:'pos_host_ui',
  minify:true,
  
  // Options below are automatically set depending on the env, set them if you want to override
  // extractCSS: false,

  // https://quasar.dev/quasar-cli/cli-documentation/handling-webpack
  extendWebpack (cfg) 
      const webpack = require('webpack');   
      cfg.plugins.push(
            new webpack.optimize.LimitChunkCountPlugin(
              maxChunks: 1
                )
      );
      
      cfg.module.rules.push(
        resourceQuery: /blockType=i18n/,
        type: 'javascript/auto',
        use: [
           loader: '@kazupon/vue-i18n-loader' ,
           loader: 'yaml-loader' ,
        ]
      );
   

【讨论】:

以上是关于如何禁用 webpack 4 代码拆分?的主要内容,如果未能解决你的问题,请参考以下文章

如何混合多个入口点并同时观看 laravel mix

如何使用 Webpack 代码拆分处理部署?

Webpack 4 拆分块术语

使用 webpack 代码拆分,如何加载块和 HTML 布局?

如何使用 Webpack 拆分应用程序和供应商代码

webpack 安装使用简例