发布一个npm组件库包

时间:2024-11-09 07:35:36
const path = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const TerserPlugin = require('terser-webpack-plugin'); module.exports = { entry: './src/index.js', // 入口文件 output: { path: path.resolve(__dirname, 'dist'), filename: 'my-library.js', // 输出文件 library: 'MyLibrary', // 库名称 libraryTarget: 'umd', // 支持多种模块化格式 globalObject: 'this', // 解决 UMD 在浏览器和 Node.js 环境下的兼容性问题 }, externals: { react: 'react', // 不打包 React,使用外部的 React 'react-dom': 'react-dom', // 不打包 ReactDOM }, module: { rules: [ { test: /\.jsx?$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env', '@babel/preset-react'], }, }, }, { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'], }, { test: /\.(png|jpg|gif|svg)$/, type: 'asset/resource', }, { test: /\.(woff|woff2|eot|ttf|otf)$/, type: 'asset/resource', }, ], }, plugins: [ new MiniCssExtractPlugin({ filename: 'my-library.css', }), ], optimization: { minimize: true, minimizer: [ new TerserPlugin(), // 压缩 JavaScript new CssMinimizerPlugin(), // 压缩 CSS ], }, resolve: { extensions: ['.js', '.jsx'], // 解析这些扩展名的文件 }, };

相关文章