方法一:optimization

  1. 1.可以将node_modules中代码单独打包一个chunk最终输出<br /> 2.自动分析多入口chunk中,有没有 公共的文件,如果有会打包成单独一个chunk
const { resolve } = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    //单入口
    entry:'./src/js/index.js',
    // entry: {
    //     //多入口:有一个入口,最终输出就有一个bundle
    //     main:'./src/js/index.js',
    //     test:'./src/js/test.js'
    // },
    output: {
        //[name]取文件名
        filename: 'js/[name].[contenthash:10].js',
        path: resolve(__dirname, 'build'),
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html',
            minify: {
                collapseWhitespace: true,
                removeComments: true
            }
        })
    ],
    /*
        1.可以将node_modules中代码单独打包一个chunk最终输出
        2.自动分析多入口chunk中,有没有 公共的文件,如果有会打包成单独一个chunk
    */
    optimization:{
        splitChunks:{
            chunks:'all'
        }
    },
    mode: 'production',
}

推荐:方法二:optimization+import动态导入

index.js

function sum(...args) {
  return args.reduce((p, c) => p + c, 0);
}

/**
 * 通过js代码,让某个文件被单独打包成一个chunk
 * import动态导入语法:能将某个文件单独打包
 */
import(/*webpackChunkName:"test"*/'./test')
.then((result)=>{
  //文件加载成功
  // eslint-disable-next-line
  console.log(result)
})
.catch(()=>{
  // eslint-disable-next-line
  console.log('文件加载失败')
})

// eslint-disable-next-line
console.log(sum(1, 2, 3));
// eslint-disable-next-line
console.log(mul);

test.js

export function mul(x, y) {
  return x * y;
}
export function count(x, y) {
  return x - y;
}