webpack.config.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const {resolve} = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. /**
  4. * HMR:一个模块发生变化,只打包一个
  5. * css文件支持热更新
  6. * js默认不支持 解决:修改js代码,单独处理非入口js文件
  7. * html默认不支持(由于只有一个html文件,不需要HMR功能),且默认不热更新 解决:entry加入index.html
  8. */
  9. module.exports = {
  10. entry : ['./src/js/index.js','./src/index.html'],
  11. output:{
  12. filename: 'js/built.js',
  13. path: resolve(__dirname,'build')
  14. },
  15. module:{
  16. rules:[
  17. //less
  18. {
  19. test:/\.less$/,
  20. use:['style-loader','css-loader','less-loader']
  21. },
  22. //css
  23. {
  24. test:/\.css$/,
  25. use:['style-loader','css-loader']
  26. },
  27. //图片
  28. {
  29. test: /\.(jpg|jpeg|png|gif)$/,
  30. loader: 'url-loader',
  31. options:{
  32. limit:8*1024,
  33. name:'[hash:10].[ext]',
  34. esModule:false,
  35. outputPath: 'imgs'
  36. },
  37. type:'javascript/auto'
  38. },
  39. //html
  40. {
  41. test:/\.html$/,
  42. loader: 'html-loader'
  43. },
  44. //其他
  45. {
  46. exclude:/\.(html|js|css|less|jpg|jpeg|png|gif)$/,
  47. loader:'file-loader',
  48. options:{
  49. name:'[hash:10].[ext]',
  50. esModule:false,
  51. outputPath: 'media'
  52. },
  53. type:'javascript/auto'
  54. }
  55. ]
  56. },
  57. plugins:[
  58. new HtmlWebpackPlugin({
  59. template:'./src/index.html'
  60. })
  61. ],
  62. mode: 'development',
  63. devServer:{
  64. contentBase:resolve(__dirname,'build'),
  65. compress:true,
  66. port:3000,
  67. open:true,
  68. hot:true
  69. },
  70. target: "web" //可以解决browserslist 导致 webpack-dev-server 的自动刷新失效
  71. }