」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 NPM 上建立和發布 TypeScript 套件

如何在 NPM 上建立和發布 TypeScript 套件

發佈於2024-08-27
瀏覽:430

Como Criar e Publicar Pacotes TypeScript no NPM
隨著 TypeScript 的日益流行,許多開發人員正在創建靜態類型包以利用該語言提供的優勢。在這篇文章中,我們將介紹使用 TypeScript 建立和發布 NPM 套件的過程。


1. 配置環境

確保您已安裝 Node.js、NPM 和 TypeScript。您可以使用以下命令全域安裝 TypeScript:

npm install -g typescript

檢查一切是否安裝正確:

node -v
npm -v
tsc -v

2. 創建專案

首先為您的專案建立一個目錄:

mkdir meu-pacote-typescript
cd meu-pacote-typescript

初始化 Node.js 專案:

npm init

這將建立 package.json 文件,您可以在其中定義基本套件資訊。

3. 配置 TypeScript

現在,初始化一個 TypeScript 專案:

tsc --init

這將建立一個 tsconfig.json 檔案。根據需要進行編輯,但常見的設定如下:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS",
    "declaration": true,
    "outDir": "./dist",
    "strict": true
  },
  "include": ["src/**/*"]
}

在這裡,我們配置 TypeScript 編譯器來產生帶有 CommonJS 模組的 ES6 程式碼,並包含類型聲明(聲明:true)。編譯後的程式碼會放在dist.

目錄下

4. 編寫程式碼

建立一個 src 目錄並在其中建立一個檔案index.ts:

mkdir src
touch src/index.ts

在index.ts檔案中,編寫您的套件程式碼。讓我們建立一個簡單的函數來將字串轉換為大寫:

export function toUpperCase(str: string): string {
  return str.toUpperCase();
}

5. 編譯程式碼

將 TypeScript 編譯為 JavaScript:

tsc

這將在 dist 目錄中產生 JavaScript 檔案和類型聲明。

6. 本地測試包

要測試您的包,您可以將其本地安裝在另一個專案中:

  1. 在您的測試專案目錄中,執行:
   npm install ../caminho-para-o-diretorio-do-seu-pacote/dist
  1. 在測試項目中使用此函數:
   import { toUpperCase } from 'nome-do-seu-pacote';

   console.log(toUpperCase('hello world')); // "HELLO WORLD"

這確保 JavaScript 程式碼和類型聲明都能正常運作。

7. 在NPM上發布

如果一切正常,您就可以發布您的包了。

  1. NPM登入

如果您還沒有 NPM 帳戶,請建立一個並登入:

   npm login
  1. 發布

在發布前,先在package.json中加入建置腳本:

   "scripts": {
     "build": "tsc"
   }

並在package.json中加入輸出路徑:

   "main": "dist/index.js",
   "types": "dist/index.d.ts"

現編譯發布:

   npm run build
   npm publish

如果套件名稱已存在,則需要選擇一個新名稱。

8. 更新包

要發布新版本,請更改package.json中的版本,再次運行npm run build,然後發布:

npm publish

9. 最佳實踐

  • 文件:包含一個 README.md 文件,解釋如何使用您的套件。
  • 測試:使用 Jest 等框架編寫測試,以確保程式碼能如預期運作。
  • Linting:使用 ESLint 和 Prettier 等工具來維護程式碼品質。
  • 版本控制:按照 SemVer 對您的套件進行版本控制。

結論

在 NPM 上建立和發布 TypeScript 套件不僅可以提高程式碼品質,還可以為使用套件的使用者提供打字優勢。透過遵循本指南,您將準備好與 JavaScript 和 TypeScript 社群分享您的解決方案,為更強大、更穩健的開發生態系統做出貢獻。

現在您已經了解了流程,那麼開始建立您的下一個 TypeScript 套件呢?

版本聲明 本文轉載於:https://dev.to/lucaspereiradesouzat/como-criar-e-publicar-pacotes-typescript-no-npm-3gd4?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何解決 MySQL C# 中的文字編碼問題?
    如何解決 MySQL C# 中的文字編碼問題?
    修復MySQL C# 中的文字編碼問題使用實體框架在C# 中處理MySQL 資料庫時,使用者可能會遇到文字編碼問題,特別是帶有特殊字符,例如“ë”,渲染不正確。本文探討了解決此常見問題的最合適的解決方案。 要修正編碼問題,必須執行以下操作:驗證排序規則設定: 確保所涉及的資料庫或表的排序規則與UTF...
    程式設計 發佈於2024-11-06
  • 如何將美麗搜尋與 Node.js 集成
    如何將美麗搜尋與 Node.js 集成
    作為 Node.js 開發人員,建立能夠提供快速且準確的搜尋結果的應用程式非常重要。使用者期望立即得到相關的回應,但實現起來可能具有挑戰性,特別是在處理大型資料集時。 這就是美麗搜尋的用武之地——一個為輕鬆滿足這些需求而構建的搜尋引擎。 什麼是美麗搜尋? Meilisearch ...
    程式設計 發佈於2024-11-06
  • 平行 JavaScript 機
    平行 JavaScript 機
    作者:Vladas Saulis,PE Prodata,克萊佩達,立陶宛 2024 年 5 月 18 日 抽象的 本文提出了一種新的程式設計模型,可以以簡單且自動平衡的方式利用多核心 CPU 系統。該模型還提出了一種更簡單的程式設計範例,用於在大多數大規模平行計算領域(例如天氣預報、核子物理、搜尋引...
    程式設計 發佈於2024-11-06
  • 推薦項目:人事管理系統資料庫設置
    推薦項目:人事管理系統資料庫設置
    LabEx 的這個綜合計畫提供了深入研究資料庫管理世界的寶貴機會,重點是人事管理系統的創建和實施。無論您是新手資料庫管理員還是經驗豐富的開發人員,這種實務經驗都將為您提供必要的技能,以便在關聯式資料庫環境中有效管理和操作資料。 深入了解資料庫基礎知識 這個專案首先引導您完成使用 s...
    程式設計 發佈於2024-11-06
  • Python 中實例方法和類別方法有什麼不同?
    Python 中實例方法和類別方法有什麼不同?
    類別與實例方法Python 的PEP 8 風格指南建議使用“self”作為實例方法的第一個參數,使用“ cls」作為類別方法的第一個參數。理解這兩類方法之間的區別對於有效的物件導向程式設計至關重要。 實例方法實例方法與類別的特定實例相關聯。它們對實例的資料進行操作,並且通常接收“self”作為它們的...
    程式設計 發佈於2024-11-06
  • 將 AdoptiumJDK 原始碼載入到 Eclipse IDE 中
    將 AdoptiumJDK 原始碼載入到 Eclipse IDE 中
    AdoptiumJDK 的安裝程式中沒有內建原始程式碼文件,如果您需要透過 Eclipse IDE 檢查如何使用任何本機 JDK 方法,這是不可能的。 依照以下步驟在Eclipse IDE中載入原始碼: 造訪 AdoptiumJDK 官方網站並按所需的 JDK 版本進行過濾,在我的例子中是 11....
    程式設計 發佈於2024-11-06
  • 絕對定位與相對定位:為什麼它們的行為如此不同?
    絕對定位與相對定位:為什麼它們的行為如此不同?
    了解絕對位置與相對位置:寬度、高度等處理網頁上的元素定位時,了解這些概念絕對位置與相對位置的區別至關重要。讓我們深入探討經常引起疑問的四個關鍵點:1。相對寬度與絕對寬度為何相對定位的div會自動佔據100%寬度,而絕對定位的div只佔據內容寬度? 原因是設定位置:absolute 從文件結構的正常流...
    程式設計 發佈於2024-11-06
  • Python、Node js 和 PHP 中用於驗證碼識別的頂層模組
    Python、Node js 和 PHP 中用於驗證碼識別的頂層模組
    在我们的自动化时代,大多数解决方案都可以免费找到,我现在不是在谈论解决数学问题,而是稍微复杂的任务,例如数据解析,和我们的例子一样,还有 recapcha 识别。但如何找到一个好的模块呢?毕竟,随着技术的发展,每个人都得到了它,无论是认真的开发人员还是彻头彻尾的骗子。 我分析了验证码识别模块的市场,...
    程式設計 發佈於2024-11-06
  • 以下是一些標題選項,重點關注問題格式和核心內容:

**選項 1(直接且簡潔):**

* **如何在 PHP 中有效率地循環多維數組?

**選項2
    以下是一些標題選項,重點關注問題格式和核心內容: **選項 1(直接且簡潔):** * **如何在 PHP 中有效率地循環多維數組? **選項2
    在 PHP 中循環多維數組多維數組可能是解析的一個挑戰,特別是在處理不同深度級別和非順序索引時。考慮一個保存事件資訊的數組,其中可以包含多個藝術家及其相應的鏈接,如下所示:array(2) { [1]=> array(3) { ["eventID"]...
    程式設計 發佈於2024-11-06
  • 透過 Linting 提高程式碼品質
    透過 Linting 提高程式碼品質
    Whenever I start a new project, one of the first things I do is put in place a code linter. For the uninitiated, linters analyze your project and call...
    程式設計 發佈於2024-11-06
  • 如何有效執行JavaScript中的回呼函數?
    如何有效執行JavaScript中的回呼函數?
    理解JavaScript 中回呼函數的本質在JavaScript 中,回呼函數提供了一種方便的機制,可以在另一個函數完成後執行一個函數它的執行。雖然概念很簡單,但回調的最佳實作有時可能不清楚。讓我們探討一個簡化的範例:var myCallBackExample = { myFirstFunc...
    程式設計 發佈於2024-11-06
  • Vue 框架簡介
    Vue 框架簡介
    What is Vue? from the Vue website Vue is a "progressive" JavaScript framework for building user interfaces. It works by build...
    程式設計 發佈於2024-11-06
  • 逃離戲劇:為什麼 HydePHP 是您的 WordPress 替代品
    逃離戲劇:為什麼 HydePHP 是您的 WordPress 替代品
    WordPress 戲劇 隨著 WordPress 生態系統面臨前所未有的混亂,許多開發人員和網站所有者正在重新考慮他們的平台選擇。最近 WordPress 共同創辦人 Matt Mullenweg 和 WP Engine 之間的衝突凸顯了 WordPress 社群內的控制、貢獻和...
    程式設計 發佈於2024-11-06
  • Go 中的並發模式;工作池和扇出/扇入
    Go 中的並發模式;工作池和扇出/扇入
    Go 以其卓越的並發模型而聞名,但許多開發人員只專注於 goroutine 和通道。然而,工作池和扇出/扇入等並發模式提供了真正的效率。 本文將介紹這些進階概念,幫助您最大限度地提高 Go 應用程式的吞吐量。 為什麼並發很重要 並發允許程式有效率地執行任務,特別是在處理 I/O ...
    程式設計 發佈於2024-11-06
  • 如何在 C++ 中將單一字元轉換為 std::string?
    如何在 C++ 中將單一字元轉換為 std::string?
    從單字建立字串從單一字元建立字串人們可能會遇到需要將表示為char 資料類型的單字轉換為std:: string。從字串中取得字元很簡單,只需在所需位置索引字串即可。然而,相反的過程需要不同的方法。 要從單字建立std::string,可以使用多種方法:char c = 34; std::strin...
    程式設計 發佈於2024-11-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3