webpack深入学习

一、webpack可以做哪些事情?

代码转换(ES6-ES5,scss/less-css)、文件优化(压缩代码体积,合并文件等)、代码分割(开发多页面应用的时候,实现公共模块的分离)、模块合并(按照功能将多模块合并为一个模块)、自动刷新(热更新)、代码校验、自动发布

二、webpack常见配置

1.手动修改webpack.config.js文件名称:webpack --config webpack.config.my.js

2.在package.json中配置:

'scripts': {
    'build': 'webpack --config webpack.config.my.js'
}

3.webpack.config.js文件配置

// webpack是node写出来的node的写法
let path = require('path') // 解析出node的核心模块,内置模块
module.exports = {
  devServer: { // 开发服务器的配置
    port: 3000, 
    progress: true, // 打包记录条
    contentBase: './build' // 以该文件为静态服务,可以找到该文件夹
  },
  mode: 'production', // 模式:默认两种,生产环境production以及开发环境development
  entry: './src/index.js', // 入口文件
  output: {
    // 8表示只显示8位
    filename: 'bundle.[hash: 8].js', // 打包后的文件名,加入hash戳可以使得每次生成的文件都不一致,每次对文件进行修改,都可以产生一个新的文件
    // __dirname表示以当前目录下产生一个dist路径
    path: path.resolve(__dirname,'dist') // 打包后的bundle.js的路径,且必须是绝对路径,path.resolve将相对路径解析成绝对路径
  },
  plugins: [ // 数组放着所有的webpack插件
    new HtmlWebpackPlugin({
      template: './src/index.html', // 希望以该文件为模板
      filename: 'index.html', // 打包后也是index.html
      minify: { // 代码压缩
        removeAttributeQuotes: true, // 删除文件中的双引号,比如index.html文件
        collapseWhitespace: true, // 折叠空行
        
      },
      hash: true, // 针对缓存问题,加一个hash戳
    })
  ]
}

三、webpack高级配置

let path = require('path')
module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    filename: 'bundle.[hash: 8].js',
    path: path.resolve(__dirname,'dist')
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html',
      filename: 'index.html',
      minify: { // 代码压缩
        removeAttributeQuotes: true,
        collapseWhitespace: true,
        
      },
      hash: true,
    })
  ],
  module: { // 模块
    rules: [ // 规则
      // style-loader是将css插入到head标签中
      // loader的顺序,默认从右向左执行,从下到上执行
      { 
        // 可以处理less文件
        test: /\.css$/, 
        use: [
          {
            loader: 'style-loader',
            options: {
              insertAt: 'top'
            }
          },
          'css-loader'
        ] 
      },  // css-loader,解析@import这种语法
      { 
        // 可以处理less文件/sass/stylus
        test: /\.less$/, 
        use: [
          {
            loader: 'style-loader',
            options: {
              insertAt: 'top'
            }
          },
          'css-loader',
          'less-loader' // 把less-css
        ] 
      }  // css-loader,解析@import这种语法
    ]
  }
}

四、webpack优化策略

五、AST抽象语法树

六、掌握webpack流程,手写webpack

七、手写webpack中常见的loader

八、手写webpack中常见的plugin

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Delicia_Lani

你的鼓励将是我写作的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值