webpack的学习知识

104 篇文章 0 订阅

webpack 学习

不建议全局安装–使用本地安装

npm install webpack webpack-cli -D在这里插入图片描述

-D 本地使用 --save 线上用
在这里插入图片描述

直接运行webpack

npx webpack
在这里插入图片描述

绝对路径

相对路径

compress 服务器压缩

  • 插件

打包html插件

在这里插入图片描述

在这里插入图片描述
可以打包出不同的js文件
在这里插入图片描述

清除插件
在这里插入图片描述

使用
数组或者正则
在这里插入图片描述

  • 单页 引入多个js 或者说是(多入口)

在这里插入图片描述

  • 多页面 (多入口多出口)

在这里插入图片描述

多页面入口js

html 插件也需要配置多个

一般都是单入口

webpack 热更新

webpack - loder

处理样式

npm install style-loader css-loader node-sass sass-loader -D

抽离样式 – 抽离到css文件 通过css文件的方式引入

统一放在css文件下

css 放到2个文件下

mini-css

只能抽离成一个css文件

开发的时候禁用抽离css 上线的时候在抽离

删除多余css的插件

用在htmlWebapckplugin 下面

查看相关配置–

www.npmjs.com/package/purifycss-webpack

  • 自动加前缀

项目使用


const path = require('path')
const { env } = require('process')

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const CompressionPlugin = require('compression-webpack-plugin')
const isProduction = process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'uat'
const HappyPack = require('happypack')

const timeStamp = new Date().getTime()

function resolve (dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  productionSourceMap: true, // 开启源代码错位位置
  lintOnSave: false,
  configureWebpack: {
    plugins: [
      new HappyPack({ // 多线程打包
        loaders: [
          'babel-loader', 'vue-loader', 'url-loader'
        ],
        cache: true,
        threads: 3
      }), new CompressionPlugin({
        filename: '[path][base].gz',
        algorithm: 'gzip',
        test: /\.js$|\.css$|\.html$/,
        threshold: 10240,
        minRatio: 0.8
      }), new BundleAnalyzerPlugin()
    ],
    devtool: isProduction ? false : 'source-map', // 线上不打包source-map 开启源代码错位位置
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    name: 'dfdf',
    resolve: {
      alias: {
        '@': resolve('src') // 配置跟看路径为src
      }
    }
    // output: {
    //   filename: `js/[name].${timeStamp}.js`,
    //   chunkFilename: `js/chunk.[id].${timeStamp}.js`
    // }

  },
  // css: {
  //   extract: { // 打包后css文件名称添加时间戳
  //     filename: `css/[name].${timeStamp}.css`,
  //     chunkFilename: `css/chunk.[id].${timeStamp}.css`
  //   }
  // },
  chainWebpack (config) {
    config.module.rule('pug')
      .test(/\.pug$/)
      .use('pug-html-loader')
      .loader('pug-html-loader')
      .end()
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
    config.plugin('html')
      .tap(args => {
        const date = new Date()
        args[0].title = '珍客销售云'
        args[0].createDate = date
        return args
      })

    // config.output.filename = 'js/[name].[contenthash].js'
    // config.output.chunkFilename = 'js/[name].[contenthash].js'
  },
  devServer: {
    port: '8080',
    open: true,
    hot: true,
    disableHostCheck: true,
    clientLogLevel: 'warning',
    overlay: {
      warnings: false,
      errors: true
    }
  }
}

可以的大家点点关注-总结不易谢谢大家-也可以留言需要哪类的我也可以尝试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值