zoukankan      html  css  js  c++  java
  • webpack配置项简述

    webpack模块打包机

    环境

    	mode:'development' | 'production' 
    

    webpack4-5直接使用生产环境会默认开启treestrek,处理js,json文件

    入口

    	entry:'./src/index.js'	// 入口文件
    

    出口

    	output:{
    		filename:'built.js',
    		path:resolve(__dirname,'build')
    	}
    	// 也可以批量配置出口
    

    loader

    	module:{
    		rules:[
    			// 详细的loader配置
    			test:\.js$\,
    			use:[
    				// 执行顺序,从右到左,从下到上
    				
    			]
    		]
    	}
    
    处理js的loader
    	js		babel-loader
    处理css的loader
    	scss	css-loader	sass-loader	
    	less	css-loader	less-loader
    	css		css-loader	style-loader
    处理图片的loader
    	统一使用  url-loader	
    			image-webpack-loader(压缩图片配置的loader)
    处理字体的loader
    	统一使用  file-loader
    处理tpl的loader
    	tpl		ejs-compiled-loader
    

    plugin

    
    
    const CleanCSS = require("clean-css");
    // 清除css
    
    const UglifyJsPlugin  = require('uglifyjs-webpack-plugin')
    webpack3需要使用该插件,4-5自动开启
    	plugins.push(
            new webpack.optimize.UglifyJsPlugin({
              //压缩代码
              compress: {
                warnings: false,
              },
            })
      );
    

    文件拷贝

    公共文件或者是项目中使用的插件使用拷贝
    const CopyWebpackPlugin = require("copy-webpack-plugin");
    
    var copyDir = ["img", "lib"],
    copyConfig = [];
    copyDir.forEach((dir) => {
      // 当循环文件的时候自动创建img下对应的图片文件夹
      copyConfig.push({
        from: `./src/${dir}`,
        to: path.resolve(__dirname + config.getPublicPath()) + "/" + dir,
        ignore: ["**/.*/**/*", "*.scss"],
        transform: function (content) {
          if (dir !== "css") return content;
          return new CleanCSS({}).minify(content).styles; //压缩css文件
        },
      });
    });
    
    plugins.push(
      //文件copy插件
      new CopyWebpackPlugin(copyConfig)
    );
    

    css文件抽离(已被弃用,使用mini-css-extract-plugin)

    将js中的css文件进行抽离到独立文件输出
    style-loader、css-loader 需要配合两项loader使用
    const ExtractTextPlugin = require("extract-text-webpack-plugin");
    
    plugins.push(new ExtractTextPlugin("css/[name].css"));
    
    
      	{
            test: /\.(sa|sc|c)ss/,
            use: ExtractTextPlugin.extract({
              fallback: "style-loader",
              // publicPath: "../img/",
              use: ["css-loader", "sass-loader"],
            }),
          },
          {
            test: /\.less$/,
            use: ExtractTextPlugin.extract({
              //分离less编译后的css文件
              fallback: "style-loader",
              use: ["css-loader", "less-loader"],
            }),
          },
    

    处理兼容css loader

    cnpm i postcss-loader postcss-preset-env -D
    

    压缩css插件

    cnpm i optimize-css-assets-webpack-plugin -D
    
    
     new OptimizeCssAssetsWebpackPlugin()
    

    压缩html

    cnpm i html-webpack-plugin -D
    
    plugins:[
    	new HtmlWebpackPlugin({
    		template:'./src/index.html',
    		minify:{
    			// 移除空格
    			collapseWhitespace:true,
    			// 移除注释
    			removeComments:true
    		}
    	})
    ]
    

    多出口打包文件

    对于生产出的文件进行分类
    const HtmlWebpackPlugin = require("html-webpack-plugin");
    
    // htmlpages 为一个html文件目录
    HtmlPages.forEach((page) => {
      // 生成html文件
      plugins.push(
        new HtmlWebpackPlugin({
          //根据模板插入css/js等生成最终HTML
          static: {
            meta: metatpl,
            header: headertpl,
            footer: footertpl,
            js: jstpl,
          },
          filename: `./${page}.html`, //生成的html存放路径,相对于 path
          template: `./src/${page}.ejs`, //html模板路径
          favicon: "./favicon.ico",
          hash: true,
          minify: {                   // 是否开启压缩false为不压缩
            removeComments: true,
            collapseWhitespace: true,
            removeAttributeQuotes: true,
          },
          chunks: [page],             // 为不同的页面注入不同的chunk
          excludeChunks: ["print", "report"], //不包含打印入口文件
        })
      );
      entryConfig[page] = `./src/js/${page}.js`;
    });
    
    打包更新文件
    删除旧文件,生产新文件,直接插件中实例化使用即可
    const { CleanWebpackPlugin } = require("clean-webpack-plugin");
    
    plugin.push(new CleanWebpackPlugin())
    
    愿以往所学皆有所获
  • 相关阅读:
    后缀数组模板
    UVALive
    蓝桥杯 拿糖果
    蓝桥杯 矩阵乘法(区间DP)
    51nod 矩阵乘法
    13.boost有向无向图邻接表表示
    12.boost有向图无向图(矩阵法)
    11.使用boostregex遭遇无法打开libboost_regex-vc120-mt-sgd-1_62.lib的问题
    10.ref regex unordered_set smartpoint
    9.variant move function change_cast
  • 原文地址:https://www.cnblogs.com/Azune/p/15637838.html
Copyright © 2011-2022 走看看