webpack 配置文件webpack.config.js

2021年12月03日 22:48:07阅读数:168博客 / 中天行者 / 大前端学习
  1. var {resolve} =require('path');
  2. //引用html 插件
  3. var htmlWebpackPlugin = require("html-webpack-plugin");
  4. //引入打包css到独立文件的插件
  5. var miniCssExtractPlugin=require('mini-css-extract-plugin');
  6. //引入压缩css插件
  7. var cssMinimizerWebpackPlugin = require('css-minimizer-webpack-plugin');
  8. module.exports = {
  9. //打包开始的入口文件
  10. //可以是单个
  11. //entry:"./src/index.js",
  12. //也可以是多个(数组) 会打包在一个入口文件中
  13. //entry:["./src/index.js","./src/index2.js"]
  14. //还可以是对象模式 这时会生成多个入口文件main.js和index.js
  15. entry: {
  16. index: "./src/index.js"
  17. },
  18. //打包后路径
  19. output: {
  20. //输出的入口文件名 单个入口
  21. //"filename":"main.js",
  22. //输出的入口文件名 多个入口
  23. "filename": "[name].js",
  24. //打包后的文件夹名
  25. "path": resolve(__dirname, 'dist')
  26. },
  27. plugins: [
  28. //使用html插件
  29. new htmlWebpackPlugin({
  30. //使用的html文件
  31. template: "./src/index.html",
  32. //输出的html文件名
  33. filename: "index.html",
  34. //可以 在输出的index.html 中引用指定js 对应entry 中的key
  35. chunks: ['index'],
  36. minify: {
  37. //移除空格
  38. collapseWhitespace: true,
  39. //移除注释
  40. removeComment: true
  41. },
  42. }),
  43. //创建 打包css到独立文件夹下的插件 对象
  44. new miniCssExtractPlugin({
  45. filename:'css/[name].css' //输出的css文件名,放置在dist/css目录下
  46. }),
  47. //创建 压缩css 对象
  48. new cssMinimizerWebpackPlugin()
  49. ],
  50. module: {
  51. rules: [
  52. //处理css
  53. {
  54. // 正则表达式,表示.css后缀的文件
  55. test: /\.css$/,
  56. // 针对css文件使用的loader,注意有先后顺序,数组项越靠后越先执行
  57. use: [
  58. //css打包成独立文件
  59. {
  60. loader: miniCssExtractPlugin.loader
  61. } ,
  62. //css处理插件
  63. 'css-loader',
  64. //css兼容性处理
  65. 'postcss-loader'
  66. ]
  67. // use: ['style-loader','css-loader'] //style-loader类似打包到html中
  68. },
  69. //处理图片
  70. {
  71. test: /\.(png|jpg|jpeg|gif)$/,
  72. use: [
  73. {
  74. loader: 'url-loader',
  75. options: {
  76. // publicPath: './img/', //会在html的地址前加上这个
  77. outputPath: 'img/',
  78. limit: 1024 * 8,
  79. name:'[name][hash:8].[ext]',
  80. esModule: false
  81. }
  82. }
  83. ],
  84. },
  85. // html加载图片
  86. {
  87. test:/\.(html)$/i,
  88. use:'html-withimg-loader', // 解析 html中的图片资源
  89. },
  90. //处理其他非js|json|html|css|less|scss|png|gif|jpg|jpeg文件
  91. {
  92. exclude: /\.(js|json|html|css|less|scss|png|gif|jpg|jpeg)$/,
  93. loader: 'file-loader',
  94. options: {
  95. outputPath: 'font/',
  96. publicPath: './font',
  97. name:'[name][hash:8].[ext]'
  98. }
  99. },
  100. //处理sass
  101. {
  102. // 正则表达式,表示.css后缀的文件
  103. test: /\.scss$/,
  104. // 针对css文件使用的loader,注意有先后顺序,数组项越靠后越先执行
  105. use: [
  106. //css打包成独立文件
  107. {
  108. loader: miniCssExtractPlugin.loader
  109. } ,
  110. //css处理插件
  111. 'css-loader',
  112. //css兼容性处理
  113. 'postcss-loader',
  114. 'sass-loader'
  115. ]
  116. // use: ['style-loader','css-loader'] //style-loader类似打包到html中
  117. },
  118. ]
  119. },
  120. //默认打包方式 开发模式 | production 生产模式
  121. mode:'development',
  122. //服务器启动 npx webpack serve
  123. devServer: {
  124. port:8080,
  125. compress:true,
  126. open:true,
  127. hot:true
  128. },
  129. //生产模式打包时文件过大导致报错
  130. performance: {
  131. hints:'warning',
  132. //入口起点的最大体积
  133. maxEntrypointSize: 50000000,
  134. //生成文件的最大体积
  135. maxAssetSize: 30000000
  136. },
  137. //服务器启动后自动刷新
  138. target: "web",
  139. };
批改状态:合格

老师批语:

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 博主信息
    中天行者
    博文
    21
    粉丝
    0
    评论
    0
    访问量
    3974
    积分:0
    P豆:48