news 2026/6/10 14:39:30

插件发布到npm

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
插件发布到npm

从文章截取的上传npm插件内容

https://mp.weixin.qq.com/s/GrFTU6EoEo7CgifaW32wLg

3. 工程化构建配置

既然是 SDK,最好的分发方式当然是发布到 NPM。这样其他项目只需要一行命令就能接入你的前端错误监控系统。

这里我们选择「Rollup」对代码进行打包,因为它比 Webpack 更适合打包库(Library),生成的代码更简洁。

3.1 package 配置 (package.json)

package.json不仅仅是依赖管理,它还定义了你的包如何被外部使用。配置不当会导致用户引入报错或无法获得代码提示。

{ "name": "performance-sdk", "version": "1.0.0", "description": "A lightweight performance monitoring SDK", "main": "dist/index.cjs.js", "module": "dist/index.esm.js", "browser": "dist/index.umd.js", "type": "module", "scripts": { "build": "rollup -c", "dev": "rollup -c -w" }, "keywords": ["performance", "monitor", "sdk"], "license": "MIT", "files": ["dist"], "devDependencies": { "rollup": "^4.9.0", "@rollup/plugin-typescript": "^11.1.0", "@rollup/plugin-terser": "^0.4.0", "typescript": "^5.3.0", "tslib": "^2.6.0" } }

「💡 关键字段解读:」

  • name: 包的“身份证号”。在 NPM 全球范围内必须唯一,发布前记得先去搜一下有没有重名。

  • 「入口文件“三剑客”」(决定了别人怎么引用你的包):

    • main:「CommonJS 入口」。给 Node.js 环境或老旧构建工具(如 Webpack 4)使用的。

    • module:「ESM 入口」。给现代构建工具(Vite, Webpack 5)使用的。支持 Tree Shaking(摇树优化),能减小体积。

    • browser:「UMD 入口」。给浏览器直接通过<script>标签引入使用的(如 CDN)。

  • files:「发布白名单」。指定npm publish时只上传哪些文件(这里我们只传编译后的dist目录)。源码、测试代码等不需要发上去,以减小包体积。

3.2 TypeScript 配置 (tsconfig.json)

我们需要配置 TypeScript 如何编译代码,并生成类型声明文件(.d.ts),这对使用 TS 的用户非常友好。

{ "compilerOptions": { "target": "es5", // 编译成 ES5,兼容旧浏览器 "module": "esnext", // 保留 ES 模块语法,交给 Rollup 处理 "declaration": true, // 生成 .d.ts 类型文件 (关键!) "declarationDir": "./dist", // 类型文件输出目录 "strict": true, // 开启严格模式,代码更健壮 "moduleResolution": "node" // 按 Node 方式解析模块 }, "include": ["src/**/*"] // 编译 src 下的所有文件 }

3.3 Rollup 打包配置 (rollup.config.js)

为了兼容各种使用场景,我们配置 Rollup 输出三种格式:

  1. 「ESM (.esm.js)」: 给现代构建工具(Vite, Webpack)使用,支持 Tree Shaking。

  2. 「CJS (.cjs.js)」: 给 Node.js 或旧版工具使用。

  3. 「UMD (.umd.js)」: 可以直接在浏览器通过<script>标签引入,会挂载全局变量。

import typescript from '@rollup/plugin-typescript'; import terser from '@rollup/plugin-terser'; export default { input: 'src/index.ts', output: [ { file: 'dist/index.cjs.js', format: 'cjs', sourcemap: true }, { file: 'dist/index.esm.js', format: 'es', sourcemap: true }, { file: 'dist/index.umd.js', format: 'umd', name: 'PerformanceSDK', sourcemap: true, plugins: [terser()], }, ], plugins: [ typescript({ tsconfig: './tsconfig.json', declaration: true, declarationDir: 'dist', }), ], };

4. 发布到 NPM (保姆级教程)

4.1 准备工作

  1. 「注册账号」:去 npmjs.com 注册一个账号(记得验证邮箱,否则无法发布)。

  2. 「检查包名」:在 NPM 搜一下你的package.json里的name,确保没有被占用。如果不幸重名,改个独特的名字,比如performance-sdk-vip

4.2 终端操作三步走

打开终端(Terminal),在项目根目录下操作:

「第一步:登录 NPM」

    npm login
    • 输入命令后按回车,浏览器会弹出登录页面。

    • 或者在终端根据提示输入用户名、密码和邮箱验证码。

    • 登录成功后会显示Logged in as <your-username>.

    • 注意:如果你之前切换过淘宝源,发布时必须切回官方源:npm config set registry https://registry.npmjs.org/

    「第二步:打包代码」

    确保dist目录是最新的,不要发布空代码。

      npm run build

      「第三步:正式发布」

        npm publish --access public
        • --access public参数用于确保发布的包是公开的(特别是当包名带@前缀时)。

        • 看到+ performance-sdk-vip@1.0.0字样,恭喜你,发布成功!

        现在,全世界的开发者都可以通过npm install performance-sdk-vip来使用你的作品了!

        5. 如何使用

        SDK 发布后,支持多种引入方式,适配各种开发场景。

        • NPM + ES Modules(推荐)

        npm install performance-sdk
        • import PerformanceMonitor from 'performance-sdk'; const monitor = new PerformanceMonitor({ /* 可选:log, sampleRate, reportUrl */ }); monitor.init();
        • CDN 直接引入(UMD)

        • <script src="https://unpkg.com/performance-sdk@x.x.x/dist/index.umd.js"></script> <script> const monitor = new PerformanceSDK.PerformanceMonitor({ /* 可选配置 */ }); monitor.init(); </script>
        版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
        网站建设 2026/6/7 18:03:27

        IPD课程系列-产品平台和CCB

        一、课程简介如果您的企业面临以下问题&#xff0c;则需要考虑参加本课程&#xff1a;1.如何实现基于产品平台去开发产品&#xff1f;2.如何规划产品平台&#xff1f;3.如何进行技术规划&#xff1f;4.如何进行CBB&#xff08;公共共享模块&#xff09;设计&#xff1f;5.如何保…

        作者头像 李华
        网站建设 2026/4/26 15:03:10

        Python多线程与多进程:如何选择?(GIL全局解释器锁详解)

        SQLAlchemy是Python中最流行的ORM&#xff08;对象关系映射&#xff09;框架之一&#xff0c;它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。目录安装SQLAlchemy核心概念连接数据库定义数据模型创建数据库表基本CRUD操作查询数据关系操…

        作者头像 李华
        网站建设 2026/6/10 13:22:46

        Razor 简介

        Razor 简介 概述 Razor 是一种由微软开发的开源服务器端标记语言,它主要用于在 ASP.NET MVC 和 ASP.NET Web Pages 应用程序中创建动态网页。Razor 的设计理念是让开发者能够以简洁的方式编写视图代码,同时保持与 HTML 的紧密集成。本文将详细介绍 Razor 的基本概念、工作原…

        作者头像 李华
        网站建设 2026/6/10 13:43:42

        7-16 WPS JS宏 RandBetween、Address实例8--[唯一性]类的应用

        7-16 WPS JS宏 RandBetween、Address实例8--[唯一性]类的应用 函数 RandBetween&#xff1a; 为excel函数&#xff0c;需要WorksheetFunction调用。 格式&#xff1a;WorksheetFunction.RandBetween(起点,终点) Address&#xff1a; 为显示地址 格式&#xff1a;区域范围等…

        作者头像 李华
        网站建设 2026/6/9 15:36:29

        Moltbot 超详细安装使用教程(初学者版)

        🦞 从零开始,手把手教你安装配置 Moltbot 个人 AI 助手 适合人群:完全没有编程经验的小白用户 目录 一、什么是 Moltbot?为什么要用它? 1.1 简单理解 1.2 它和 ChatGPT 有什么区别? 1.3 它能帮你做什么? 二、安装前的准备工作 2.1 你需要准备什么? 2.2 确认你的…

        作者头像 李华
        网站建设 2026/6/10 14:22:14

        Highcharts 组合图

        Highcharts 组合图 概述 Highcharts 是一个功能强大的 JavaScript 图表库,它能够帮助开发者轻松地创建各种类型的图表,包括组合图。组合图是一种将不同类型的图表元素(如柱状图、折线图、饼图等)组合在一起的图表,用于展示数据之间的关系和趋势。本文将详细介绍 Highcha…

        作者头像 李华