亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-12 02:10:14 來源:腳本之家 閱讀:157 作者:savokiss 欄目:web開發

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

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

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

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

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

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

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

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

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

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

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

4. 運行構建命令

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

"build": "tsc"

5. 運行 npm publish

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

"release": "tsc && npm publish"

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

如果想要在發布前調試本地包,可以使用 npm link 命令,在此項目根目錄執行npm link, 然后在要調試的 demo 項目中執行 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"]
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内江市| 杂多县| 太康县| 乌苏市| 玉田县| 宜宾市| 横峰县| 桓台县| 昌都县| 磐石市| 新宁县| 吕梁市| 五莲县| 荃湾区| 宁津县| 望谟县| 保德县| 南靖县| 新密市| 若尔盖县| 正蓝旗| 密山市| 襄樊市| 年辖:市辖区| 安徽省| 济宁市| 河源市| 米易县| 柳州市| 岳西县| 邢台县| 洛南县| 渑池县| 竹北市| 册亨县| 白城市| 平凉市| 南溪县| 崇礼县| 剑川县| 印江|