webpack.config.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. const path = require('path');
  2. const HtmlWebpackPlugin = require("html-webpack-plugin");
  3. const {CleanWebpackPlugin} = require("clean-webpack-plugin");
  4. const config = {
  5. mode: 'development',
  6. entry: ['@babel/polyfill', path.resolve(__dirname, './src/index.js')],
  7. output: {
  8. filename: '[name].[hash:8].js',
  9. path: path.resolve(__dirname, './dist')
  10. },
  11. plugins: [
  12. // 自动把入口 js 插入到 index.html 中
  13. new HtmlWebpackPlugin({
  14. filename: "index.html",
  15. template: path.resolve(__dirname, './src/public/index.html')
  16. }),
  17. // 清除 dist 的插件
  18. new CleanWebpackPlugin()
  19. ],
  20. module: {
  21. rules: [
  22. // 转为 es5 语法,兼容更多浏览器
  23. {
  24. test: /\.js$/,
  25. exclude: /node_modules/,
  26. use: [
  27. {
  28. loader: 'babel-loader',
  29. options: {
  30. presets: ['@babel/preset-env']
  31. }
  32. }
  33. ]
  34. },
  35. // css 打包
  36. {
  37. test: /\.css$/,
  38. use: ['style-loader', 'css-loader']
  39. },
  40. // 设置 limit,如果超过限制,使用 file-loader 打包
  41. {
  42. test: /\.(jpg|png|gif)$/,
  43. use: [
  44. {
  45. loader: 'url-loader',
  46. options: {
  47. limit: 1024,
  48. fallback: {
  49. loader: 'file-loader',
  50. options: {
  51. name: 'img/[name].[hash:8].[ext]'
  52. }
  53. }
  54. }
  55. }
  56. ]
  57. },
  58. {
  59. test: /\.(mp4|webm|ogg|mp3|wav)(\?.*)?$/,
  60. use: [
  61. {
  62. loader: 'url-loader',
  63. options: {
  64. limit: 1024,
  65. fallback: {
  66. loader: 'file-loader',
  67. options: {
  68. name: 'media/[name].[hash:8].[ext]'
  69. }
  70. }
  71. }
  72. }
  73. ]
  74. },
  75. {
  76. test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
  77. use: [
  78. {
  79. loader: 'url-loader',
  80. options: {
  81. limit: 1024,
  82. fallback: {
  83. loader: 'file-loader',
  84. options: {
  85. name: 'fonts/[name].[hash:8].[ext]'
  86. }
  87. }
  88. }
  89. }
  90. ]
  91. }
  92. ]
  93. },
  94. devServer: {
  95. port: '3000',
  96. host: '127.0.0.1',
  97. hot: true,
  98. // 自动打开 url
  99. open: true
  100. },
  101. }
  102. module.exports = config;