打包样式资源

webpack.config.js中module部分

引入:
‘style-loader’**,
‘css-loader’**,
**‘less-loader’**

  1. module:{
  2. rules:[
  3. //详细loader配置
  4. //不同文件必须配置不同loader处理
  5. {
  6. //配置那些文件,以css结尾的文件
  7. test:/\.css$/,
  8. //使用哪些loader进行处理
  9. use:[
  10. //use数组中loader执行顺序:从右到左,从下到上 依次执行
  11. //创建style标签,将js中的央视资源插入进行,添加到head中生效
  12. 'style-loader',
  13. //将css文件变成commonjs模块加载js中,里面内容是 样式字符串
  14. 'css-loader'
  15. ]
  16. },
  17. {
  18. test:/\.less$/,
  19. use:[
  20. 'style-loader',
  21. 'css-loader',
  22. //将less文件编译成css文件
  23. //需下载less-loader和less
  24. 'less-loader'
  25. ]
  26. }
  27. ]
  28. },

打包HTML资源

webpack.config.js中plugins部分

引入插件:
html-webpack-plugin

  1. /**
  2. * loader:1.下载 2.使用(配置loader)
  3. * plugins:1.下载 2.引入 3.使用
  4. */
  5. plugins:[
  6. //plugins的配置
  7. //html-webpack-plugin
  8. //功能:默认会创建一个空的HTML文件,自动引入打包输出所有资源(JS/CSS)
  9. //需求:需要有结构的HTML文件
  10. new HtmlWebpackPlugin({
  11. //复制'./src/index.html'文件,并自动引入打包输出所有资源(JS/CSS)
  12. template:'./src/index.html'
  13. })
  14. ],

打包图片资源

webpack.config.js中module,plugins部分

引入:
‘style-loader’**,
‘css-loader’,
‘less-loader’,
**url-loader’,
‘file-loader**‘,
‘html-loader’,
html-webpack-plugin‘,**

  1. module:{
  2. rules:[
  3. {
  4. test:/\.less$/,
  5. //要使用多个loader处理用user
  6. use:[
  7. 'style-loader',
  8. 'css-loader',
  9. 'less-loader'
  10. ]
  11. },
  12. {
  13. //问题:默认处理不了html中img图片
  14. //处理图片资源
  15. test:/\.(jpg|png|gif)$/,
  16. //使用一个loader
  17. //下载 url-loader file-loader
  18. loader:'url-loader',
  19. options:{
  20. //图片大小小于8kb,会被base64处理
  21. //优点:减少请求数量(减轻服务器压力)
  22. //缺点:图片体积会更大(文件请求速度会更慢)
  23. limit:8*1024,
  24. //问题:因为url-loader默认使用es6模块解析,而html-loader引入图片是commonjs
  25. //解析时会出问题:[object Module]
  26. //解决:关闭url-loader的es6模块化,使用commonjs解析
  27. //esModule:false
  28. //给图片重命名
  29. //[hash:10]取图片的hash的前10位
  30. //[ext]取文件的原来扩展名
  31. name:'[hash:10].[ext]'
  32. }
  33. },
  34. {
  35. test:/\.html$/,
  36. //处理html文件的img图片(负责引入img,从而能被url-loader进行处理)
  37. loader:'html-loader'
  38. }
  39. ]
  40. },
  41. plugins:[
  42. new HtmlWebpackPlugin({
  43. template:'./src/index.html'
  44. })
  45. ],

打包其他资源

webpack.config.js中module部分

引入:
‘style-loader’**,
‘css-loader’**,
**file-loader‘**

  1. module:{
  2. rules:[
  3. {
  4. test:/\.css$/,
  5. use:[
  6. 'style-loader',
  7. 'css-loader'
  8. ]
  9. },
  10. //打包其他资源(除了html/js/css资源以外的资源)
  11. {
  12. //排除html/js/css
  13. exclude:/\.(css|js|html|less)$/,
  14. loader:'file-loader',
  15. options:{
  16. name:'[hash:10].[ext]'
  17. }
  18. }
  19. ]
  20. },

devServer的使用

  1. //开发服务器devServer:用来自动化(自动编译,自动打开浏览器,自动刷新浏览器)
  2. //特点:只会在内存中编译打包,不会有任何输出
  3. //启动devServe指令为:npx webpack-dev-server
  4. devServer:{
  5. //项目构建后的路径
  6. contentBase:resolve(__dirname,'build'),
  7. //启动gzip压缩
  8. compress:true,
  9. //端口号
  10. port:8080,
  11. //自动打开浏览器
  12. open:true
  13. }