nodejs打包完整流程
前言
面给出一份「从 0 到 1」把 Node.js 代码打包并发布为公共 npm 包的完整流程,全部步骤均来自 2024-2025 年最新社区实践,可直接照做。
(如只想打绿色可执行文件而不发布,可跳到最后「附:PKG 绿色可执行包」小节)
一、前置准备
-
安装 Node.js ≥ 14(推荐 18 LTS)
-
注册 npm 账号 → https://www.npmjs.com/signup
-
本地登录
npm login # 按提示输入账号、密码、邮箱npm whoami # 验证是否登录成功
二、创建与编码
-
新建文件夹并初始化
mkdir my-utils # 包名仅作示例cdmy-utilsnpm init-y # 生成默认 package.json -
修改 package.json(关键字段)
{"name":"my-utils", // 全网唯一,可先去 npm 搜索确认"version":"1.0.0","description":"常用工具函数","main":"dist/index.js", // CommonJS 入口"module":"dist/index.mjs", // ESModule 入口(可选)"files": ["dist"], // 只发布 dist 目录"scripts": {"build":"tsup src/index.ts --format cjs,esm --dts","prepublishOnly":"npm run build"},"keywords": ["utils","tool"],"author":"your-name <you@example.com>","license":"MIT","repository": {"type":"git","url":"https://github.com/yourname/my-utils.git"}} -
业务代码
src└── index.ts示例 src/index.ts
export const sleep = (ms: number) =>newPromise<void>(r => setTimeout(r, ms)); -
安装打包工具(零配置,2024 最流行)
npm i-Dtsup typescript @types/node
三、一键构建
生成 dist/ 目录,里面同时出现
-
index.js → CommonJS
-
index.mjs → ESModule
-
index.d.ts → 类型声明
四、本地“白嫖”测试(可选)
-
把包链到全局
npm link -
在任意项目里
npm link my-utils -
使用
const {sleep} = require('my-utils');(async () => { awaitsleep(1000); console.log('ok'); })();
五、发布公共包
-
确保包名全局唯一(去 https://www.npmjs.com/search 搜一下)
-
发布
npm publish --accesspublic成功后会收到 npm 官方邮件;随后任何人可
npm i my-utils
六、常见踩坑提醒
表格
复制
| 问题 | 解决方案 |
|---|---|
| 名字重复 | 提前搜索,或加 scope: @yourname/utils 发布时同样 npm publish --access public |
| 私有包收费 | 公共包不要用 @scope/pkg 除非加 --access public |
| 忘记构建 | 用 prepublishOnly 钩子,每次 npm publish 前自动 npm run build |
| 二进制文件 | 如果包内含原生 .node 文件,需在不同平台分别 prebuild 或使用 @mapbox/node-pre-gyp |
附:PKG 绿色可执行包(可选,不发布 npm 也能用)
-
安装
npm i-gpkg -
在 package.json 里增加
"bin":"dist/cli.js","pkg": {"targets": ["node18-win-x64","node18-linux-x64","node18-macos-x64"],"outputPath":"release"} -
打包
pkg . --compressBrotli得到 release/ 目录下的绿色可执行文件,无 Node 环境也能运行。
完成!现在你已经同时拥有
-
一个可 npm i xxx 安装的公共包;
-
一份可选的绿色可执行文件用于离线分发。
如需继续补充「CI 自动发布」「语义化版本」「双模块(CommonJS + ESM)兼容」等进阶主题。
总结
到此这篇关于nodejs打包作为公共包使用的文章就介绍到这了,更多相关nodejs打包公共包使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://www.jb51.net/javascript/350066m5i.htm
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com