webpack.config.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. const path = require('path');
  2. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  3. const webpack = require('webpack')
  4. module.exports = {
  5. mode: 'production',
  6. // devtool: "source-map",
  7. entry: path.join(__dirname, "./src/export.js"),
  8. output: {
  9. filename: 'index.js',
  10. path: path.resolve(__dirname, 'lib'),
  11. //意思是把我们的输出作为组件,没有这个在react项目中识别不到export导出的组件
  12. library: {
  13. type: 'umd', // 以库的形式导出入口文件时,输出的类型,这里是通过umd的方式来暴露library,适用于使用方import的方式导入npm包
  14. }
  15. },
  16. resolve: {
  17. // 设置别名
  18. extensions: ["*", ".js", ".jsx"],// 配置会将没指定拓展名的文件按如下类型查找匹配
  19. alias: {
  20. '@': path.resolve(__dirname, 'src'),
  21. antd: path.resolve(__dirname, "node_modules/antd"),
  22. }
  23. },
  24. module: {
  25. rules: [
  26. {
  27. test: /\.(css|scss)$/i,
  28. use: ["style-loader", MiniCssExtractPlugin.loader, "css-loader", "sass-loader"],
  29. },
  30. {
  31. test: /\.(js|jsx)$/,
  32. loader: 'babel-loader',
  33. include: [path.resolve('src')],// 只在src文件夹下查找
  34. exclude: /(node_modules|dist|build|example)/
  35. },
  36. {
  37. test: /(\.module)?.(sass|scss)$/,
  38. use: [
  39. 'style-loader',
  40. {
  41. loader: 'css-loader',
  42. options: {
  43. modules: {
  44. localIdentName: '[path][name]__[local]--[hash:base64:5]',
  45. },
  46. sourceMap: true,
  47. },
  48. },
  49. 'sass-loader',
  50. ],
  51. },
  52. {
  53. test: /(\.module)?.(less)$/,
  54. use: [
  55. 'style-loader',
  56. {
  57. loader: 'css-loader',
  58. options: {
  59. modules: {
  60. localIdentName: '[path][name]__[local]--[hash:base64:5]',
  61. },
  62. sourceMap: true,
  63. },
  64. },
  65. 'less-loader',
  66. ],
  67. },
  68. ]
  69. },
  70. plugins: [
  71. new MiniCssExtractPlugin({
  72. filename: "index.css" // 提取后的css的文件名
  73. }),
  74. new webpack.ProvidePlugin({
  75. "React": "react",
  76. }),
  77. ],
  78. // externalsPresets: { node: true },
  79. //打包时不将以下依赖打包进index.js,需要引用组件的项目提前npm好
  80. externals: [{
  81. 'react': 'react',
  82. 'react-dom': 'react-dom',
  83. },
  84. ]
  85. }