webpack.config.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const path=require('path');
  2. const { CleanWebpackPlugin } = require('clean-webpack-plugin');
  3. //const { HtmlWebpackPlugin } = require("html-webpack-plugin");
  4. const HtmlWebpackPlugin = require('html-webpack-plugin');
  5. //const { VueLoaderPlugin } = require('vue-loader/dist/index');
  6. const { VueLoaderPlugin } = require('vue-loader');
  7. module.exports={
  8. entry:"./index.js",
  9. output:{
  10. filename:"bundle.js",
  11. path:path.resolve(__dirname,"./dist")
  12. },
  13. resolve: {
  14. alias: {
  15. vue: 'vue/dist/vue.esm-bundler.js' // 关键配置
  16. }
  17. },
  18. module:{
  19. rules:[
  20. {
  21. test:/\.css$/i,
  22. use:["style-loader","css-loader"]
  23. },
  24. {
  25. test:/\.vue$/,
  26. use:[
  27. { loader:"vue-loader" }
  28. ]
  29. },
  30. // 处理 .js 文件
  31. {
  32. test: /\.js$/,
  33. loader: 'babel-loader',
  34. exclude: /node_modules/
  35. },
  36. {
  37. test:/\.(png|jpe?g|gif|svg)$/i,
  38. // use:[{
  39. // loader:"file-loader",
  40. // options:{
  41. // limit: 512 * 1024,
  42. // name: "[name].[ext]",
  43. // outputPath:"media",
  44. // },
  45. // }]
  46. type: 'asset/resource',
  47. generator:{
  48. filename: "[name].[ext]",
  49. }
  50. },
  51. {
  52. test:/\.(woff2?|eof|ttf)$/i,
  53. // use:[{
  54. // loader:"file-loader",
  55. // options:{
  56. // limit: 512 * 1024,
  57. // name: "[name].[ext]",
  58. // outputPath:"media",
  59. // },
  60. // }]
  61. type: 'asset/resource',
  62. generator:{
  63. filename: "./font/[name].[ext]",
  64. }
  65. },]
  66. },
  67. plugins:[
  68. new VueLoaderPlugin(),
  69. new CleanWebpackPlugin(),
  70. new HtmlWebpackPlugin({
  71. inject:'body',
  72. title:"webpack sample ",
  73. template:"./index.html"
  74. })
  75. ]
  76. }