webpack.config.js 1.7 KB

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