nodejs打包作為公共包使用的完整流程
前言
面給出一份「從 0 到 1」把 Node.js 代碼打包并發(fā)布為公共 npm 包的完整流程,全部步驟均來自 2024-2025 年最新社區(qū)實踐,可直接照做。
(如只想打綠色可執(zhí)行文件而不發(fā)布,可跳到最后「附:PKG 綠色可執(zhí)行包」小節(jié))
一、前置準備
安裝 Node.js ≥ 14(推薦 18 LTS)
注冊 npm 賬號 → https://www.npmjs.com/signup
本地登錄
npm login # 按提示輸入賬號、密碼、郵箱 npm whoami # 驗證是否登錄成功
二、創(chuàng)建與編碼
新建文件夾并初始化
mkdir my-utils # 包名僅作示例 cd my-utils npm init -y # 生成默認 package.json
修改
package.json(關(guān)鍵字段){ "name": "my-utils", // 全網(wǎng)唯一,可先去 npm 搜索確認 "version": "1.0.0", "description": "常用工具函數(shù)", "main": "dist/index.js", // CommonJS 入口 "module": "dist/index.mjs", // ESModule 入口(可選) "files": ["dist"], // 只發(fā)布 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" } }業(yè)務(wù)代碼
src └── index.ts
示例
src/index.tsexport const sleep = (ms: number) => new Promise<void>(r => setTimeout(r, ms));
安裝打包工具(零配置,2024 最流行)
npm i -D tsup typescript @types/node
三、一鍵構(gòu)建
npm run build
生成 dist/ 目錄,里面同時出現(xiàn)
index.js→ CommonJSindex.mjs→ ESModuleindex.d.ts→ 類型聲明
四、本地“白嫖”測試(可選)
把包鏈到全局
npm link
在任意項目里
npm link my-utils
使用
const { sleep } = require('my-utils'); (async () => { await sleep(1000); console.log('ok'); })();
五、發(fā)布公共包
確保包名全局唯一(去 https://www.npmjs.com/search 搜一下)
發(fā)布
npm publish --access public
成功后會收到 npm 官方郵件;隨后任何人可
npm i my-utils
六、常見踩坑提醒
表格
復(fù)制
| 問題 | 解決方案 |
|---|---|
| 名字重復(fù) | 提前搜索,或加 scope: @yourname/utils 發(fā)布時同樣 npm publish --access public |
| 私有包收費 | 公共包不要用 @scope/pkg 除非加 --access public |
| 忘記構(gòu)建 | 用 prepublishOnly 鉤子,每次 npm publish 前自動 npm run build |
| 二進制文件 | 如果包內(nèi)含原生 .node 文件,需在不同平臺分別 prebuild 或使用 @mapbox/node-pre-gyp |
附:PKG 綠色可執(zhí)行包(可選,不發(fā)布 npm 也能用)
安裝
npm i -g pkg
在
package.json里增加"bin": "dist/cli.js", "pkg": { "targets": ["node18-win-x64", "node18-linux-x64", "node18-macos-x64"], "outputPath": "release" }打包
pkg . --compress Brotli
得到
release/目錄下的綠色可執(zhí)行文件,無 Node 環(huán)境也能運行。
完成!現(xiàn)在你已經(jīng)同時擁有
一個可
npm i xxx安裝的公共包;一份可選的綠色可執(zhí)行文件用于離線分發(fā)。
如需繼續(xù)補充「CI 自動發(fā)布」「語義化版本」「雙模塊(CommonJS + ESM)兼容」等進階主題。
總結(jié)
到此這篇關(guān)于nodejs打包作為公共包使用的文章就介紹到這了,更多相關(guān)nodejs打包公共包使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nodejs中使用phantom將html轉(zhuǎn)為pdf或圖片格式的方法
這篇文章主要介紹了Nodejs中使用phantom將html轉(zhuǎn)為pdf或圖片格式的方法,需要的朋友可以參考下2017-09-09
30分鐘用Node.js構(gòu)建一個API服務(wù)器的步驟詳解
這篇文章主要介紹了30分鐘用Node.js構(gòu)建一個API服務(wù)器的步驟詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
node.js讀取Excel數(shù)據(jù)(下載圖片)的方法示例
這篇文章主要給大家介紹了關(guān)于node.js讀取Excel數(shù)據(jù)(下載圖片)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用node.js具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08
Linux下為Node.js程序配置MySQL或Oracle數(shù)據(jù)庫的方法
這篇文章主要介紹了Linux下為Node.js程序配置MySQL或Oracle數(shù)據(jù)庫的方法,這里默認已經(jīng)裝配好了Node環(huán)境然后我們利用npm包管理工具來進行配置,需要的朋友可以參考下2016-03-03
Nodejs 中的 Buffer 類的創(chuàng)建與基本使用
這篇文章主要為大家介紹了Nodejs中Buffer的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10

