当前位置: 首页 > news >正文

发布一个npm组件库包

Webpack 配置 (webpack.config.js)

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(), // 压缩 JavaScriptnew CssMinimizerPlugin(), // 压缩 CSS],},resolve: {extensions: ['.js', '.jsx'], // 解析这些扩展名的文件},
};
  • 外部依赖:在 externals 中配置不打包的依赖(例如 React 和 ReactDOM),并在 peerDependencies 中声明它们,以确保用户在使用你的库时会安装这些依赖。

Package.json 配置

{"name": "my-library","version": "1.0.0","main": "dist/my-library.js", // CommonJS 入口"module": "dist/my-library.esm.js", // ESModule 入口"files": ["dist"],"scripts": {"build": "webpack --mode production"},"dependencies": {// 需要打包的依赖},"peerDependencies": {"react": "^17.0.0", // 作为 peer dependency"react-dom": "^17.0.0"},"devDependencies": {"@babel/core": "^7.0.0","@babel/preset-env": "^7.0.0","@babel/preset-react": "^7.0.0","babel-loader": "^8.0.0","css-loader": "^6.0.0","mini-css-extract-plugin": "^2.0.0","terser-webpack-plugin": "^5.0.0","css-minimizer-webpack-plugin": "^3.0.0","webpack": "^5.0.0","webpack-cli": "^4.0.0"}
}
  • main:

http://www.mrgr.cn/news/68754.html

相关文章:

  • CSS中的变量应用——:root,Sass变量,JavaScript中使用Sass变量
  • 十四:java web(6)-- Spring Spring MVC
  • 【星海随笔】PgSQL安装篇
  • mysql常见的一些配置项
  • 零基础Java第十三期:继承与多态(一)
  • 【ddnsgo+ipv6】
  • 哈哈,这可是“加长版”吐槽,我先声明,绝对有趣但绝对善意的深度吐槽!你要是真的看完
  • 算法训练(leetcode)二刷第二十天 | 93. 复原 IP 地址、78. 子集、90. 子集 II
  • 标准遗传算法-c++源程序
  • 从0开始学习机器学习--Day19--学习曲线
  • Moment.js、Day.js、Miment,日期时间库怎么选?
  • leetcode hot100【LeetCode 17.电话号码的字母组合】java实现
  • 快速开发工具 Vite
  • 大模型微调技术 --> IA3
  • LeetCode 每日一题 长度为 K 的子数组的能量值
  • 牛客小白月赛104-D小红开锁-模拟
  • c++:stack,queue,priority_queue模拟实现
  • 软件设计师中级 第9章 数据库技术基础
  • 从零开始学习python 7(持续更新ing)
  • 有趣的Midjourney作品赏析(附提示词)
  • Leetcode 长度最小的子数组
  • 06 Oracle性能优化秘籍:AWR、ASH、SQL trace与实时监控的实战指南
  • git基础操作
  • Python的函数
  • CDN到底是什么?
  • C++算法探索:从排序到动态规划