美文网首页
2020-03-04

2020-03-04

作者: 風吹過的夏天 | 来源:发表于2020-03-04 14:03 被阅读0次

                                                    如何配置webpack4打包工具

    安装前先npm初始化

    npm init-y    //初始化

    npm addwebpack webpack-cli -D  //安装本地

    constpath= require('path')   // 相对路径变绝对路径

    module.exports ={

     mode: 'production', // 模式 默认 production development

     entry: './src/index',    // 入口

     output:{

        filename: 'bundle.[hash:8].js',   // hash: 8只显示8位

        path:path.resolve(__dirname, 'dist'),

        publicPath: '' // // 给所有打包文件引入时加前缀,包括css,js,img,如果只想处理图片可以单独在url-loader配置中加publicPath

     }

    }

    本地服务

    npm add webpack-dev-server -D

    devServer: {//开发服务器的配置

      port: 3000,

      progress: true          //滚动条

      contentBase: './build'  //起服务的地址

      open: true              //自动打开浏览器

      compress:true         // gzip压缩

    }

    复制html

    npm add html-webpack-plugin -D

    const HtmlWebpackPlugin = require('html-webpack-plugin')

    plugins: [ // 放着所有webpack插件

      new HtmlWebpackPlugin({ //用于使用模板打包时生成index.html文件,并且在run dev时会将模板文件也打包到内存中

        template: './index.html', //模板文件

        filename: 'index.html', //打包后生成文件

        hash: true, //添加hash值解决缓存问题

        minify: { //对打包的html模板进行压缩

          removeAttributeQuotes: true, //删除属性双引号

          collapseWhitespace: true //折叠空行变成一行

        }

      })

    ]

    html-webpack-plugin#options

    处理css

    npm add css-loader style-loader -D

    // css-loader   作用:用来解析@import这种语法

    // style-loader 作用:把 css 插入到head标签中

    // loader的执行顺序: 默认是从右向左(从下向上)

    module: {    //模块

      rules: [   //规则

        // style-loader把css插入head标签中

        // loader功能单一

        //多个loader 需要[]

        //顺便默认从右到左

        //也可以写成对象方式

        {

          test: /\.css$/,   // css处理

          // use: 'css-loader'

          // use: ['style-loader', 'css-loader'],

          use: [

            // {

            //     loader: 'style-loader',

            //     options: {

            //         insertAt: 'top' //将css标签插入最顶头  这样可以自定义style不被覆盖

            //     }

            // },

            MiniCssExtractPlugin.loader,

            'css-loader', // css-loader用来解析@import这种语法,

            'postcss-loader'

          ]

        }

      ]

    }

    处理less

    npm add less less-loader -D

    {

      test: /\.less$/,   // less处理

      // use: 'css-loader'

      // use: ['style-loader', 'css-loader'],

      use: [

        // {

        //     loader: 'style-loader',

        //     options: {

        //         insertAt: 'top' //将css标签插入最顶头  这样可以自定义style不被覆盖

        //     }

        // },

        MiniCssExtractPlugin.loader,   //这样相当于抽离成一个css文件, 如果希望抽离成分别不同的css, 需要再引入MiniCssExtractPlugin,再配置

        'css-loader', // css-loader用来解析@import这种语法

        'postcss-loader',

        'less-loader' // less-loader less -> css

        // sass node-sass sass-loader

        // stylus stylus-loader

      ]

    }

    less-loader

    抽离css文件,通过link引入

    npm  addmini-css-extract-plugin -D

    mini-css-extract-plugin

    const MiniCssExtractPlugin = require('mini-css-extract-plugin')

    // 压缩css

    plugins: [

      new MiniCssExtractPlugin({

          filename: 'css/main.css'

      })

    ]

    {

      test: /\.css$/,   // css处理

      // use: 'css-loader'

      // use: ['style-loader', 'css-loader'],

      use: [

        // {

        //     loader: 'style-loader',

        //     options: {

        //         insertAt: 'top' //将css标签插入最顶头  这样可以自定义style不被覆盖

        //     }

        // },

        //此时不需要style-loader

        MiniCssExtractPlugin.loader,   //抽离

        'css-loader', // css-loader用来解析@import这种语法,

        'postcss-loader'

      ]

    }

    抽离css插件文件时可使用optimize-css-assets-webpack-plugin优化压缩css以及js文件

    npm add optimize-css-assets-webpack-plugin-D

    压缩css和js

    npm add optimize-css-assets-webpack-plugin-D

    / 用了`mini-css-extract-plugin`抽离css为link需使用`optimize-css-assets-webpack-plugin`进行压缩css,使用此方法压缩了css需要`uglifyjs-webpack-plugin`压缩js

    const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin")

    const UglifyJsPlugin = require("uglifyjs-webpack-plugin")

    module.exports = {

      optimization: {              //优化项

        minimizer: [

          new UglifyJsPlugin({     //优化js

            cache: true,           //是否缓存

            parallel: true,        //是否并发打包

            // sourceMap: true     //源码映射set to true if you want JS source maps

          }),

          new OptimizeCSSAssetsPlugin({})    // css的优化

        ]

      },

      mode: 'production',

      entry: '',

      output: {},

    }

    相关文章

      网友评论

          本文标题:2020-03-04

          本文链接:https://www.haomeiwen.com/subject/wkdvlhtx.html