webpack4.0(02.本地服务和html-webpack-plugin插件)

1.webpack的初始配置

可以利用哈希来随随机生成生成名字不同的打包文件,以防止多次打包生成文件的覆盖
let path = 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
  }
}

2.开启本地服务

webpack-dev-server主要是启动了一个使用express的Http服务器。它的作用主要是用来伺服资源文件。此外这个Http服务器和client使用了websocket通讯协议,原始文件作出改动后,webpack-dev-server会实时的编译,但是最后的编译的文件并没有输出到目标文件夹,而是在内存中。

npm i webpack-dev-server -D
devServer: {
  port: 3000,
  progress: true          // 滚动条
  contentBase: ‘./build‘  // 起服务的地址
  open: true              // 自动打开浏览器
  compress: true         // gzip压缩
}
之后可以在package.json中配置脚本,来快捷启动命令

3.复制html

上边我们需要手动引入打包后的js页面与html文件中,才可以看到效果,
但其实我们可以配置插件,来完成打包后的自动引入如下:

npm i html-webpack-plugin -D
let 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 // 折叠空行变成一行
    }
  })
]

相关推荐