const path = require('path'); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const webpack = require('webpack') module.exports = { mode: 'production', // devtool: "source-map", entry: path.join(__dirname, "./src/export.js"), output: { filename: 'index.js', path: path.resolve(__dirname, 'lib'), //意思是把我们的输出作为组件,没有这个在react项目中识别不到export导出的组件 library: { type: 'umd', // 以库的形式导出入口文件时,输出的类型,这里是通过umd的方式来暴露library,适用于使用方import的方式导入npm包 } }, resolve: { // 设置别名 extensions: ["*", ".js", ".jsx"],// 配置会将没指定拓展名的文件按如下类型查找匹配 alias: { '@': path.resolve(__dirname, 'src'), antd: path.resolve(__dirname, "node_modules/antd"), } }, module: { rules: [ { test: /\.(css|scss)$/i, use: ["style-loader", MiniCssExtractPlugin.loader, "css-loader", "sass-loader"], }, { test: /\.(js|jsx)$/, loader: 'babel-loader', include: [path.resolve('src')],// 只在src文件夹下查找 exclude: /(node_modules|dist|build|example)/ }, { test: /(\.module)?.(sass|scss)$/, use: [ 'style-loader', { loader: 'css-loader', options: { modules: { localIdentName: '[path][name]__[local]--[hash:base64:5]', }, sourceMap: true, }, }, 'sass-loader', ], }, { test: /(\.module)?.(less)$/, use: [ 'style-loader', { loader: 'css-loader', options: { modules: { localIdentName: '[path][name]__[local]--[hash:base64:5]', }, sourceMap: true, }, }, 'less-loader', ], }, ] }, plugins: [ new MiniCssExtractPlugin({ filename: "index.css" // 提取后的css的文件名 }), new webpack.ProvidePlugin({ "React": "react", }), ], // externalsPresets: { node: true }, //打包时不将以下依赖打包进index.js,需要引用组件的项目提前npm好 externals: [{ 'react': 'react', 'react-dom': 'react-dom', }, ] }