webpack笔记1

1.设置多个入口起点

多用于提取公共类库

a、利用commonChunkPlugin

const webpack= require('webpack');
const path = require('path');
const HtmlWebpackPlugin= require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports
= { entry: { main: './src/main.js',
  //工具类放在一个入口
  //当内容为数组时,将创建多个主入口,生成一个chunk vendor: [
'jquery','angular']
}, output: { filename: '[name].[chunkhash].js', path: path.resolve(__dirname, 'dist'), publicPath: './' }, module: { rules: [ { test: /.css$/, use: ['style-loader', 'css-loader'] },{ test: /.(png|jpg|gif|svg)$/, loader: 'file-loader', options: { name: '[name].[ext]?[hash]' } },{ test: /.vue$/, loader: 'vue-loader', options: { loaders: { 'scss': 'vue-style-loader!css-loader!sass-loader', 'sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax', } // other vue-loader options go here } } ] }, plugins: [ new HtmlWebpackPlugin({ title: 'Output Management' }), new CleanWebpackPlugin(['dist']), new webpack.optimize.CommonsChunkPlugin({
      name: 'vendor'
,
      filename:
'librarys.js' }) ], devtool: 'source' };

这样就能生成librarys.js,包含jquery与angular,但值得注意的是会连同公共类库一起打包

b.利用external提取公共类库(推荐方法)

const path = require('path');
const HtmlWebpackPlugin= require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin')
var ManifestPlugin = require('webpack-manifest-plugin');
const webpack= require('webpack');

module.exports = {
  entry: {
    main: './src/main.js'
  },
  output: {
      //非覆盖更新
    filename: '[name].[chunkhash].js',
    path: path.resolve(__dirname, 'dist'),
    publicPath: './'
  },
  externals: {
      jquery: 'jquery'
    },
  module: {
      rules: [
      {
          test: /.css$/,
          use: ['style-loader', 'css-loader']
      },{
        test: /.(png|jpg|gif|svg)$/,
        loader: 'file-loader',
        options: {
              name: '[name].[ext]?[hash]'
        }
    },{
        test: /.vue$/,
        loader: 'vue-loader',
        options: {
              loaders: {
            'scss': 'vue-style-loader!css-loader!sass-loader',
            'sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax',
              }
        }
      }
      ]
  },
  plugins: [
      new HtmlWebpackPlugin({
       title: 'Output Management'
    }),
    new CleanWebpackPlugin(['dist'])
  ],
  devtool: 'source'
};

注意这里使用的是使用全局变量的方式,所以得手动在index.html中引入jquery

2.commonChunkPlugin

 将公共依赖放入模块提取到已有的入口chunk中,或者提取到新生成的chunk(常见)

4.动态载入

chunkFilename 非入口chunk名称

return import(/*webpackChunkName: "ladash"*/'lodash').then() 懒加载

原文地址:https://www.cnblogs.com/yanze/p/7999956.html