開發并發布一個屬于自己的包(npm)

一、CommonJS規范導入require

創建一個npm包涉及幾個步驟,包括設置你的項目結構、編寫代碼、編寫文檔、測試你的代碼,以及發布到npm倉庫。以下是一個基本的指南,幫助你從頭開始創建一個npm包。

步驟 1: 初始化npm項目

  1. 創建項目文件夾:首先,你需要一個文件夾來存放你的項目。

    mkdir muzidigbig-utils-npm
    cd muzidigbig-utils-npm
  2. 初始化npm項目:在項目文件夾中,運行以下命令來初始化一個新的npm項目。

    npm init -y

    這會創建一個package.json文件,包含一些默認設置。

步驟 2: 編寫代碼

  1. 創建文件:根據你的包需要,創建必要的文件和目錄結構。例如,如果你打算創建一個簡單的工具函數庫,你可以創建一個index.js文件。

    // index.js
    function sayHello(name) {return `Hello, ${name}!`;
    }module.exports = { sayHello };

步驟 3: 編寫文檔

  1. 更新package.json:在package.json文件中,你可以添加更詳細的描述、關鍵字、作者信息等。

    {"name": "muzidigbig-utils-npm","version": "1.0.0","description": "A simple npm package example.","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": ["muzidigbig", "utils", "npm"],"author": "muzidigbig","license": "ISC"
    }

name: 包名稱,
version: 版本號,
description: 包描述,
main: 入口文件,
keywords:數組(搜索關鍵字),
license:開源協議?

步驟 4: 測試你的代碼

  1. 添加測試腳本:你可以使用Jest、Mocha等測試框架來測試你的代碼。首先,安裝Jest:

    npm install --save-dev jest
  2. 創建測試文件:例如,創建一個 test/my-package.test.js 文件:

    const { sayHello } = require('../index');
    test('says hello', () => {expect(sayHello('World')).toBe('Hello, World!');
    });
  3. 更新package.json的scripts:添加一個測試腳

    "scripts": {"test": "jest"
    }
  4. 運行測試

    npm test


步驟 5: 發布到npm倉庫

  1. 登錄到npm:如果你還沒有登錄,運行以下命令:

    npm login


    首先確保你本地的鏡像為 npm 鏡像

    查看鏡像
    npm config get registry修改為 npm鏡像
    npm config set registry https://registry.npmjs.org/修改為 npm鏡像(全局)
    sudo npm config set -g registry https://registry.npmjs.org/
  2. 發布包確保你的版本號在package.json中是唯一的(遵循語義版本控制),然后運行:

    npm publish

    每次 npm publish 都需要修改 package.json version版本號保證其唯一。

  3. 驗證發布:登錄到npm網站,查看你的包是否已經發布。
    通過以上步驟,你可以成功創建一個并發布一個npm包。記得在開發過程中不斷更新文檔和添加更多功能,以使你的包更加完善和有用。

刪除 npm包

執行命令?npm unpublish 包名 --force,即可從 npm 刪除已發布的包。

注意
① npm unpublish 命令只能刪除 72 小時以內發布的包
② npm unpublish 刪除的包,在 24 小時內不允許重復發布

Usage 用法

1.項目中安裝依賴:?

npm install muzidigbig-utils-npm

2.引入包?

// const { sayHello } = require('muzidigbig-utils-npm');
import { sayHello } from 'muzidigbig-utils-npm'; // ES6
console.log(sayHello('World')); // Outputs: Hello, World!

二、升級為ES6模塊導入(import/export)

Node.js > v13.2.0

步驟 1:?設置type為module

在項目的package.json中添加"type": "module",這樣Node.js會將所有的.js文件都當成ES6模塊來處理?

步驟 2:?代碼轉譯?

使用如Babel這樣的轉譯工具將代碼轉譯為兼容老版本Node.js的格式??

npm i @babel/core @babel/preset-env

配置 Babel

通常使用?.babelrc?文件或?babel.config.cjs?文件來配置 Babel

module.exports = {presets: ['@babel/preset-env'],
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902705.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CRTP(Curiously Recurring Template Pattern)

C 中的 CRTP(奇異遞歸模板模式) CRTP(Curiously Recurring Template Pattern)是一種利用模板繼承實現 靜態多態(Static Polymorphism) 的設計模式。通過基類模板以派生類作為模板參數,CRTP 允許…

小白工具視頻轉MPG, 功能豐富齊全,無需下載軟件,在線使用,超實用

在視頻格式轉換需求日益多樣的今天,小白工具網的在線視頻轉 MPG 功能https://www.xiaobaitool.net/videos/convert-to-mpg/ )脫穎而出,憑借其出色特性,成為眾多用戶處理視頻格式轉換的優質選擇。 從格式兼容性來看,它支…

銀河麒麟系統離線安裝nodejs

本篇文章我們介紹如何通過nvm(node版本管理工具)來實現離線安裝nodejs 第一步:下載nvm https://github.com/nvm-sh/nvm/releases/tag/v0.40.1 在頁面找到【Source code(tar.gz)】下載 第二步:安裝nvm 將下載好的tar.gz拷貝到銀河麒麟系統文件夾下(加…

Go語言中包導入下劃線的作用解析

在Go語言的代碼中,有時會看到類似以下的導入語句: import _ "github.com/mattn/go-sqlite3"這種以下劃線_開頭的導入方式,顯得有些特別,尤其是對于新手來說,可能會感到困惑,為什么要這樣寫&…

Winddows11官網下載安裝VMware Workstation Pro17(圖文詳解)

Winddows11安裝VMware17 1、官網下載2、安裝3、總結 1、官網下載 官網地址 點擊Products,滑到最下面,選擇SEE DESKTOPP HYPERVISORS 選擇 DOWNLOAD FUSION OR WORKSTATION 自動跳轉到下面哪個服界面,注冊 輸入郵箱地址和圖片下面的文字…

DeepSeek智能時空數據分析(二):3秒對話式搞定“等時圈”繪制

序言:時空數據分析很有用,但是GIS/時空數據庫技術門檻太高 時空數據分析在優化業務運營中至關重要,然而,三大挑戰仍制約其發展:技術門檻高,需融合GIS理論、SQL開發與時空數據庫等多領域知識;空…

【Linux網絡】應用層自定義協議與序列化及Socket模擬封裝

📢博客主頁:https://blog.csdn.net/2301_779549673 📢博客倉庫:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正! &…

基于大模型的結腸癌全病程預測與診療方案研究

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、結腸癌概述 2.1 流行病學特征 2.2 發病機制與危險因素 2.3 臨床癥狀與診斷方法 三、大模型技術原理與應用現狀 3.1 大模型的基本原理 3.2 在醫療領域的應用情況 3.3 在結腸癌預測中的潛力分析 四、術前…

【UML建模】starUML工具

一.概述 StarUML是一款UML工具,允許用戶創建和管理UML(統一建模語言)模型,廣泛應用于軟件工程領域。它的主要功能包括創建各種UML圖:如用例圖、類圖、序列圖等,支持代碼生成與反向工程,以及提供…

模板元編程(Template Metaprogramming, TMP)

C 模板元編程(Template Metaprogramming, TMP) 模板元編程是一種利用 C 模板系統在 編譯期間 完成計算、類型操作和代碼生成的編程范式。其核心優勢在于通過 零運行時開銷 實現高效、類型安全的代碼。以下是模板元編程的詳細分步解析。 1. 編譯時計算 …

Android Build Variants(構建變體)詳解

Android Build Variants(構建變體)是 Android 開發中用于生成不同版本應用程序的一種機制。它允許開發者根據不同的需求,如不同的應用市場、不同的功能模塊、不同的環境配置等,從同一個代碼庫中生成多個不同的 APK。 組成部分 B…

26考研|數學分析:數項級數

數項級數這一章的開始,開啟了新的關于“級數”這一新的概念體系的學習進程,此部分共包含四章的內容,分別為數項級數、函數項級數、冪級數以及傅里葉級數。這一章中,首先要掌握級數的相關概念與定義,重難點在于掌握判斷…

擁抱健康生活,解鎖養生之道

在生活節奏日益加快的當下,健康養生已成為人們關注的焦點。科學的養生方法,能幫助我們增強體質、預防疾病,以更飽滿的精神狀態擁抱生活。 合理飲食是養生的基石。《黃帝內經》中提到 “五谷為養,五果為助,五畜為益&…

房地產安裝工程師簡歷模板

模板信息 簡歷范文名稱:房地產安裝工程師簡歷模板,所屬行業:其他 | 職位,模板編號:XUCP9X 專業的個人簡歷模板,邏輯清晰,排版簡潔美觀,讓你的個人簡歷顯得更專業,找到好…

HTML5 詳細學習筆記

1. HTML5 簡介 HTML5 是最新的 HTML 標準&#xff0c;于 2014 年 10 月由 W3C 完成標準制定。它增加了許多新特性&#xff0c;包括語義化標簽、多媒體支持、圖形效果、離線存儲等。 1.1 HTML5 文檔基本結構 <!DOCTYPE html> <html lang"zh-CN"> <h…

【網絡入侵檢測】基于Suricata源碼分析NFQ IPS模式實現

【作者主頁】只道當時是尋常 【專欄介紹】Suricata入侵檢測。專注網絡、主機安全,歡迎關注與評論。 1. 概要 ?? 本文聚焦于 Suricata 7.0.10 版本源碼,深入剖析其 NFQ(Netfilter Queue)模式的實現原理。通過系統性拆解初始化階段的配置流程、數據包監聽機制的構建邏輯,以…

C語言結構體和union內存對齊

在C語言的世界里&#xff0c;結構體&#xff08;struct&#xff09;和聯合體&#xff08;union&#xff09;的內存布局一直是困擾許多開發者的難題。當我們定義一個結構體時&#xff0c;編譯器會按照特定的規則為每個成員分配內存空間&#xff0c;這些規則被稱為內存對齊。看似…

本地部署DeepSeek-R1模型接入PyCharm

以下是DeepSeek-R1本地部署及接入PyCharm的詳細步驟指南,整合了視頻內容及官方文檔核心要點: 一、本地部署DeepSeek-R1模型 1. 安裝Ollama框架 ?下載安裝包 訪問Ollama官網(https://ollama.com/download)Windows用戶選擇.exe文件,macOS用戶選擇.dmg包。 ?安裝驗證 雙擊…

IEEE綜述 | 車道拓撲推理20年演進:從程序化建模到車載傳感器

導讀 車道拓撲推理對于高精建圖和自動駕駛應用至關重要&#xff0c;從早期的程序化建模方法發展到基于車載傳感器的方法&#xff0c;但是很少有工作對車道拓撲推理技術進行全面概述。為此&#xff0c;本文系統性地調研了車道拓撲推理技術&#xff0c;同時確定了未來研究的挑戰和…

開源模型應用落地-語音合成-MegaTTS3-零樣本克隆與多語言生成的突破

一、前言 在人工智能技術飛速發展的今天,文本轉語音(TTS)技術正以前所未有的速度改變著人機交互的方式。近日,字節跳動與浙江大學聯合推出了一款名為MegaTTS3 的開源TTS模型,再次刷新了行業對高質量語音合成的認知。作為一款輕量化設計的模型,MegaTTS3以僅0.45億參數 的規…