webpack基本使用笔记

什么webpack?

webpack是前端的一个模块化管理工具,他可以根据代码的require依赖,将互相依赖的文件整合打包到一个js文件中,这样html页面只需要引用一个js文件,代码也能正常执行.

webpack安装

webpack使用

  • a依赖b,cmd命令中 输入webpack a.js bundle.js a.js b.js合并生成一个新的bundle.js文件.

配置webpack.config.js

cmd中输入命令: webpack,当我们按下回车键,webpack会读取webpack.config.js文件,得到我们暴露的对象,会自动合并,用我们配置的loader

watch

在输入webpack命令时 加个这个参数webpack --watch
-- watch会自动监视文件的变化,当文件变化后,自动重新打包

webpack-dev-server

  • 作用,能够开启一个http服务器,内部也会调用webpack

  • 还能做到当代码变了之后,自动更新页面

  • 使用时,就不在命令使用webpack命令,把webpack命令改成:webpack-dev-server

  • 还能在打包时自动打开浏览器访问我们的页面

  • --port 8080 --progress --open 指定端口

  • 基本配置

//引入path模板
const path = require('path')
//定义一个对象
const obj  = {
  // 指定入口文件,最终依赖文件
  entry:{
    app: './a.js'
  },
  // 指定打包后的文件保存位置
  output:{
    // path 指定保存的文件夹位置,要指定绝定路径 __dirname只当前目录地址
    path: path.join(__dirname,'dist'),
    // 指定保存的文件名
    filename: 'bundle.js'
  },
  module:{
    loaders:[
    // 每一个loader要指它要处理的文件
     {
      // 指定一个正则,匹配css后缀的文件
      test:/.css$/,
      // 指定要用哪个 loader来处理test规则中指定的文件
      loader: 'style-loader!css-loader'
     }
    ]
  }
}
module.exports = obj

css合并

test:/.css$/      //正则匹配
loader:'style-loader!css-loader' //css-loader合并css到js中,style0loader把合并到js中的css添加到页面上

less合并

test:/.less$/      //正则匹配
loader:'style-loader!css-loader!less-loader' //less-loader把less转成css,css-loader合并css到js中,style0loader把合并到js中的css添加到页面上

js合并

  module:{
    loaders:[
      {
        test: /.js$/, // 匹配的是js文件
        loader: 'babel-loader', //js语法转换 es6-es5 其他写法-es5
        // query是webpack里的属性
        query:{
          // presets是babel-loader的属性
          //指定bable-loader中内部要使用的包
          // 这个es2015对应 babel-preset-es2015这个包  把es6转成es5
        presets:['es2015']
        }
      }
    ]
  }

url-loader

能够处理css中引用的图片,能够把图片为base64编码的字符串
也可以加条件判断,如果图片小就转换为base64

    module: {
        loaders: [
        {
          test: /.css$/,
          loader: 'style-loader!css-loader'
        },
        {
          // url-loader处理图片
          test: /.(jpg|jpeg)$/, //匹配图片文件
          loader:'url-loader',    //图片转换成base64编码的字符串
          query:{
            // 这个limit是url-loader需要,用来指定当图片小于多少时才转换成base64
            limit: 10086, //单位字节byte
            // 如果图片比limit限制的大小在,就会生成一个新的图片,和原来图片一样
            // 生成到 output.path所在目录
            // name是指定生成的图片的名字
            // [name]表示原文件名, [ext]表示原文件后缀.
            name:'[name].[ext]'
          }
        }
        ]
    }

html-webpack-plugin

自动把src的html复制到输入目录,并且能够自动引入合并后的文件(就是在html中插入了一个script标签)

// 复制生成html到dist目录
const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path')

module.exports = {
  entry:{
    app: './src/index.js'
  },
  output:{
    path: path.join(__dirname,'dist'),
    filename: 'bundle.js'
  },
  plugins: [


  // 能够自动生成index.html文件到 ouput.path对应的目录
  // 还能帮我们引入打包后的文件到生成的index.html中
  new HtmlWebpackPlugin({
    // 最终就会把这个./src/index.html生成到dist目录
    template: './src/index.html'
  })
  ]
}
原文地址:https://www.cnblogs.com/caijunjun/p/6659872.html