webpack.dev.config.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. const path = require("path");
  2. const merge = require("webpack-merge");
  3. const baseConfig = require("./webpack.base.js"); // 引用公共配置
  4. const webpack = require("webpack");
  5. const devConfig = {
  6. mode: "development", // 开发模式
  7. entry: path.join(__dirname, "../src/index.jsx"), // 项目入口,处理资源文件的依赖关系
  8. output: {
  9. path: path.join(__dirname, "../example/src/"),
  10. filename: "bundle.js", // 使用webpack-dev-sevrer启动开发服务时,并不会实际在`src`目录下生成bundle.js,打包好的文件是在内存中的,但并不影响我们使用。
  11. },
  12. module: {
  13. rules: [
  14. {
  15. test: /\.css$/,
  16. exclude: /\.min\.css$/,
  17. loader: ["style-loader", "css-loader?modules"],
  18. },
  19. // {
  20. // test: /\.s[ac]ss$/i,
  21. // use: ['style-loader','css-loader','sass-loader'],
  22. // },
  23. {
  24. test: /\.min\.css$/,
  25. loader: ["style-loader", "css-loader"],
  26. },
  27. {
  28. test: /(\.module)?.(sass|scss)$/,
  29. use: [
  30. "style-loader",
  31. {
  32. loader: "css-loader",
  33. options: {
  34. modules: {
  35. localIdentName: "[path][name]__[local]--[hash:base64:5]",
  36. },
  37. sourceMap: true,
  38. },
  39. },
  40. "sass-loader",
  41. ],
  42. },
  43. {
  44. test: /\.less$/,
  45. use: [
  46. "style-loader",
  47. {
  48. loader: "css-loader",
  49. options: {
  50. modules: true, // 确保启用了 CSS Modules
  51. },
  52. },
  53. "less-loader",
  54. ],
  55. },
  56. // {
  57. // // 匹配 icon 文件
  58. // test: /\.(icon|ttf|bin|eot|woff|woff2|svg)$/,
  59. // // 使用那些 loader 进行处理
  60. // loader: 'url-loader'
  61. // },
  62. {
  63. test: /\.(png|svg|jpg|gif)$/,
  64. use: ["file-loader"],
  65. },
  66. // {
  67. // test: /\.svg$/,
  68. // use:{
  69. // loader: "svg-sprite-loader",
  70. // include: path.resolve(__dirname,'../src/components/Icons'),
  71. // options:{
  72. // symbolId: "icon-[name]"
  73. // }
  74. // },
  75. // // include: path.iconsPath,
  76. // // options: {
  77. // // symbolId: "icon-[name]"
  78. // // }
  79. // },
  80. ],
  81. },
  82. devServer: {
  83. contentBase: path.join(__dirname, "../example/src/"),
  84. compress: true,
  85. host: "127.0.0.1", // webpack-dev-server启动时要指定ip,不能直接通过localhost启动,不指定会报错
  86. port: 3001, // 启动端口为 3001 的服务
  87. open: true, // 自动打开浏览器
  88. },
  89. plugins: [
  90. new webpack.ProvidePlugin({
  91. React: "react",
  92. }),
  93. ],
  94. };
  95. module.exports = merge(devConfig, baseConfig); // 将baseConfig和devConfig合并为一个配置