国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

教你30秒發(fā)布一個TypeScript包到NPM的方法步驟

2024-05-06 16:53:29
字體:
供稿:網(wǎng)友

文章讀譯自The 30 second guide to publishing a typescript package to npm,部分內(nèi)容有修改哈。

這篇文章要求你有一定的 JS 、TS 和 NPM 的知識,如果你寫過普通的 NPM 包就更好啦~如果沒有的話網(wǎng)上也很多教程的,都很簡單~

發(fā)布過 npm 包的同學(xué)都知道,初始化一個 npm 項目,直接用 npm init -y 就可以了,那如果要用 ts 呢,直接 tsc --init 即可。這兩個操作會生成 package.json 和 tsconfig.json 文件。然后我們按以下步驟修改一下配置:

1. 添加 "declaration": true 到你的 tsconfig.json

這行語句告訴 TypsScript 在編譯的時候為你自動生成 d.ts 文件。需要注意的是,當(dāng)你使用私有的類型時,但是這個類型也外部 API 的一部分,這個包的使用者就得不到該類型的類型推斷,TS 編譯器也會報警告,這時你只需要在該類型前添加 export 即可。

2. 添加 "types": "index.d.ts" 到你的 package.json

當(dāng)其他人導(dǎo)入你的包的時候,這句話就告訴了 TS 編譯器到哪里去尋找類型定義文件。這里的 .d.ts 文件和 main 入口指向的是一個文件夾,所以通常情況下,你的 package.json 會包含下面兩行:

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

(上面默認(rèn)你在 tsconfig.json 中配置的 outDir 指向的是 dist 目錄)

3. 保證你的 dist 目錄被添加到了 .gitignore

在我們的代碼倉庫,一般不需要包含編譯后的代碼,只需要包含源碼即可。所以我們不對 dist 目錄做版本管理。并且這也不影響我們發(fā)布 dist 目錄到 npm。

4. 運行構(gòu)建命令

運行 tsc 即可編譯所有的源碼。這非常方便,通常情況下,我們可以添加一條命令到 package.json:

"build": "tsc"

5. 運行 npm publish

接下來就是要發(fā)布到 npm 了,在 package.json 添加以下命令:

"release": "tsc && npm publish"

筆者習(xí)慣使用 standard-version 配合 commitizen 來發(fā)布 npm 包,感興趣的同學(xué)可以自行了解一下~

如果想要在發(fā)布前調(diào)試本地包,可以使用 npm link 命令,在此項目根目錄執(zhí)行npm link, 然后在要調(diào)試的 demo 項目中執(zhí)行 npm link <your package name>,然后在代碼中直接引入使用即可。

下面是完成配置后的 package.json:

{  "name": "my-ts-lib",  "version": "1.0.0",  "description": "My npm package written in TS",  "main": "dist/index.js",  "types": "dist/index.d.ts",  "scripts": {    "build": "tsc",    "release": "tsc && npm publish"  },  "author": "savokiss",  "license": "MIT",  "devDependencies": {    "typescript": "^3.5.3"  }}

下面是最終的 tsconfig.json:

{  "compilerOptions": {    "target": "es5",    "module": "commonjs",    "lib": ["es2017", "es7", "es6", "dom"],    "declaration": true,    "outDir": "dist",    "strict": true,    "esModuleInterop": true  },  "exclude": ["node_modules", "dist"]}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 康乐县| 县级市| 荆州市| 新蔡县| 山东| 凉城县| 郓城县| 屯留县| 兰州市| 金寨县| 壤塘县| 贵州省| 崇仁县| 堆龙德庆县| 长兴县| 南江县| 襄樊市| 延津县| 英山县| 株洲县| 天台县| 客服| 盐亭县| 郓城县| 五华县| 虎林市| 万州区| 盐津县| 孟津县| 晴隆县| 黄平县| 柞水县| 罗定市| 宝兴县| 九江县| 阿克陶县| 普格县| 昌黎县| 南阳市| 册亨县| 洪雅县|