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 // 折叠空行变成一行
}
})
]
原文:https://www.cnblogs.com/jackson1/p/12702271.html