nodejs打包作为公共包使用的完整流程

2025-09-26 13:50

本文主要是介绍nodejs打包作为公共包使用的完整流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可...

前言

面给出一份「从 0 到 1」把 Node.js 代码打包并发布为公共 npm 包的完整流程,全部步骤均来自 2024-2025 年最新社区实践,可直接照做。

(如只想打绿色可执行文件不发布,可跳到最后「附:PKG 绿色可执行包」小节)

一、前置准备

  1. 安装 Node.js ≥ 14(推荐 18 LTS)

  2. 注册 npmhttp://www.chinasem.cn 账号 → https://www.npmjs.com/signup

  3. 本地登录

    npm login               # 按提示输入账号、密码、邮箱
    npm whoami              # 验证是否登录成功

二、创建与编码

  1. 新建文件夹并初始化

    mkdir my-utils          # 包名仅作示例
    cd my-utils
    npm init -y             # 生成默认 package.json
  2. 修改 package.json(关键字段)

    {
      "name": "my-utilshttp://www.chinasem.cn",          // 全网唯一,可先去 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"China编程,
        "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"
      }
    }
  3. 业务代码

    src
    └── index.ts

    示例 src/index.ts

    export const sleep = (ms: number) =>
      new Promise<void>(r => setTimeout(r, ms));
  4. 安装打包工具(零配置,2024 最流行)

    npm i -D tsup typescript @types/node

三、一键构建

npm run build

生成 dist/ 目录,里面同时出现

  • index.js → CommonJS

  • index.mjs → ESModule

  • index.d.ts → 类型声明

四、本地“白嫖”测试(可选)

  1. 把包链到全局

    npm link
  2. 在任意项目里

    npm link my-utils
  3. 使用

    const { sleep } = require('my-utils');
    (async () => { await sleep(1000); console.log('ok'); })();

五、发布公共包

  1. 确保包名全局唯一(去 https://www.npmjs.com/search 搜一下)

  2. 发布

    npm publish --Access public

    成功后会收到 npm 官方邮件;随后任何人可

    npm i my-u编程China编程tils

六、常见踩坑提醒

表格

复制

问题解决方案
名字重复提前搜索,或加 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 也能用)

  1. 安装

    npm i -g pkg
  2. package.json 里增加

    "bin": "dist/cli.js",
    "pkg": python{
      "targets": ["node18-win-x64", "node18-linux-x64", "node18-MACos-x64"],
      "outputPath": "release"
    }
  3. 打包

    pkg . --compress Brotli

    得到 release/ 目录下的绿色可执行文件,无 Node 环境也能运行。

完成!现在你已经同时拥有

  • 一个可 npm i xxx 安装的公共包

  • 一份可选的绿色可执行文件用于离线分发。

如需继续补充「CI 自动发布」「语义化版本」「双模块(CommonJS + ESM)兼容」等进阶主题。

总结

到此这篇关于nodejs打包作为公共包使用的文章就介绍到这了,更多相关nodejs打包公共包使用内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于nodejs打包作为公共包使用的完整流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156045

相关文章

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载