精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何優(yōu)雅的發(fā)布一個(gè) TypeScript 軟件包?

開發(fā) 前端
我們已經(jīng)可以將 TypeScript 編譯為 JavaScript。但是,如果你按原樣將其發(fā)布到 npm,則只能在其他 JavaScript 項(xiàng)目中無(wú)縫使用它。此外,默認(rèn)目標(biāo)配置是“es2016”,而現(xiàn)代瀏覽器最多僅支持“es2015”。那么讓我們解決這個(gè)問(wèn)題吧!

向 NPM 發(fā)布軟件包本身并不是一個(gè)特別困難的挑戰(zhàn)。但是,配置你的 TypeScript 項(xiàng)目以取得成功可能是一個(gè)挑戰(zhàn)。你的軟件包能在大多數(shù)項(xiàng)目上運(yùn)行嗎?用戶能否使用類型提示和自動(dòng)完成功能?它能與 ES Modules (ESM) 和 CommonJS (CJS) 風(fēng)格的導(dǎo)入一起使用嗎?

閱讀完本篇文章后,你將了解如何使你的 TypeScript 包在任何(或大多數(shù))JavaScript 和 TypeScript 項(xiàng)目中更易于訪問(wèn)和使用,包括瀏覽器支持!

創(chuàng)建 TypeScript 項(xiàng)目

如果你正在閱讀本文,那么你很可能已經(jīng)建立了一個(gè) TypeScript 項(xiàng)目。如果這樣做,你可能想跳到后續(xù)步驟或留下來(lái)檢查是否存在差異。

讓我們首先創(chuàng)建基本 Node.js 項(xiàng)目并添加 TypeScript 作為開發(fā)依賴項(xiàng):

npm init -y
npm install typescript --save-dev

你可能希望在 src 文件夾中構(gòu)建代碼。因此,讓我們?cè)谄渲袆?chuàng)建包的入口點(diǎn):

mkdir src
touch src/index.ts

現(xiàn)在,Node.js 和瀏覽器不理解 TypeScript,因此我們需要設(shè)置 tsc (TypeScript 編譯器)將 TypeScript 代碼編譯為 JavaScript。讓我們通過(guò)運(yùn)行以下命令將 tsconfig.json 文件添加到我們的項(xiàng)目中:

npx tsc --init

如果我們現(xiàn)在運(yùn)行 npx tsc,它會(huì)掃描我們的文件夾并在與 .ts 文件相同的目錄中創(chuàng)建 .js 文件(這是不可取的)。讓我們?cè)谶\(yùn)行之前添加更好的配置,以免造成混亂。

將以下行添加到 tsconfig.json:

{
    "compilerOptions": {
        // ... Other options
        "rootDir": "./src", // Where to look for our code
        "outDir": "./dist", // Where to place the compiled JavaScript
}

我們還向 package.json 添加一個(gè)“build”腳本:

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

如果我們現(xiàn)在運(yùn)行 npm run build ,一個(gè)新的 dist 文件夾將出現(xiàn),其中包含已編譯的 JavaScript。如果你使用的是 Git,請(qǐng)確保將 dist 文件夾添加到 .gitignore 中。

設(shè)置 tsc 以獲得最佳開發(fā)者體驗(yàn)

我們已經(jīng)可以將 TypeScript 編譯為 JavaScript。但是,如果你按原樣將其發(fā)布到 npm,則只能在其他 JavaScript 項(xiàng)目中無(wú)縫使用它。此外,默認(rèn)目標(biāo)配置是“es2016”,而現(xiàn)代瀏覽器最多僅支持“es2015”。那么讓我們解決這個(gè)問(wèn)題吧!

首先,讓我們將目標(biāo)(target[1])更改為 es2015 (或 es6 ,因?yàn)樗鼈兪窍嗤模sModuleInterop[2] 默認(rèn)為 true。讓我們保持原樣,因?yàn)樗ㄟ^(guò)允許 ESM 樣式導(dǎo)入來(lái)提高兼容性。

我們使用 TypeScript 都有一個(gè)原因:類型!但是,如果你現(xiàn)在就構(gòu)建并發(fā)布你的軟件包,那么它將不會(huì)發(fā)布任何類型。讓我們通過(guò)將 declaration[3] 設(shè)置為 true 來(lái)解決這個(gè)問(wèn)題。這將與 .js 文件一起生成聲明文件(.d.ts)。僅憑這一點(diǎn),你的軟件包就能在 TypeScript 項(xiàng)目中使用,甚至在 JavaScript 項(xiàng)目中也能提供類型提示。

聲明文件在改善支持和開發(fā)人員體驗(yàn)方面已經(jīng)發(fā)揮了很大作用。然而,我們可以通過(guò)添加 declarationMap[4] 來(lái)更進(jìn)一步。這樣,將生成源映射 (.d.ts.map),以將我們的聲明文件 (.d.ts) 映射到我們的原始 TypeScript 源代碼 (.ts)。這意味著代碼編輯器在使用“轉(zhuǎn)到定義”時(shí)可以轉(zhuǎn)到原始 TypeScript 代碼,而不是編譯后的 JavaScript 文件。

當(dāng)我們這樣做時(shí),sourceMap 將添加源映射文件 (.js.map),這些文件允許調(diào)試器和其他工具在實(shí)際處理發(fā)出的 JavaScript 文件時(shí)顯示原始 TypeScript 源代碼。

使用 declarationMap 或 sourceMap 意味著我們還需要將源代碼與軟件包一起發(fā)布到 npm。

綜上所述,這是我們最終的 tsconfig.json 文件:

{
    "compilerOptions": {
        "target": "es2015",
        "module": "commonjs",
        "strict": true,
        "esModuleInterop": true,
        "rootDir": "./src",
        "outDir": "./dist",
        "sourceMap": true,
        "declaration": true,
        "declarationMap": true,
    }
}

package.json

這里的事情要簡(jiǎn)單得多。當(dāng)用戶導(dǎo)入包時(shí),我們需要指定包的入口點(diǎn)。因此,讓我們將 main 設(shè)置為 dist/index.js 。

除了入口點(diǎn)之外,我們還需要指定主要類型聲明文件。在這種情況下,這將是 dist/index.d.ts 。

我們還需要指定隨包一起提供哪些文件。當(dāng)然,我們需要發(fā)送構(gòu)建的 JavaScript 文件,但由于我們使用的是 sourceMap 和 declarationMap ,所以我們還需要發(fā)送 src 。

這是包含所有內(nèi)容的參考 package.json :

{
  "name": "the-greatest-sdk", // Your package name
  "version": "1.0.3", // Your package version
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc"
  },
  "keywords": [], // Add related keywords
  "author": "liblab", // Add yourself here
  "license": "ISC",
  "files": ["dist", "src"],
  "devDependencies": {
    "ts-node": "^10.9.1",
    "typescript": "^5.0.4"
  }
}

發(fā)布到 NPM

發(fā)布到 NPM 并不困難。我強(qiáng)烈建議你查看官方說(shuō)明,但以下是一般步驟:

  1. 確保你的 package.json 設(shè)置正確。
  2. 構(gòu)建項(xiàng)目(如果你遵循指南,則使用 npm run build )。
  3. 如果你還沒(méi)有登錄,請(qǐng)使用 npm login 向 npm 進(jìn)行身份驗(yàn)證(你需要一個(gè) npm 帳戶)。
  4. 運(yùn)行 npm publish 。

請(qǐng)記住,如果你更新軟件包,則需要在再次發(fā)布之前增加 package.json 中的 version 選項(xiàng)。

有更復(fù)雜的(和推薦的)方法來(lái)進(jìn)行發(fā)布,例如使用 GitHub Action 和 releases,特別是對(duì)于開源包,但這超出了本文的范圍。

原文:https://blog.liblab.com/typescript-npm-packages-done-right/

責(zé)任編輯:武曉燕 來(lái)源: 獨(dú)立開發(fā)者張張
相關(guān)推薦

2018-06-19 10:06:16

Linux軟件測(cè)試Nix包管理器

2018-09-17 11:35:44

Linux軟件包命令

2023-02-27 13:41:04

apt-get軟件包

2019-06-03 11:15:32

Linux軟件包命令

2022-08-14 08:29:21

npmNode

2021-04-20 22:27:22

Python軟件包GitHub

2020-11-11 08:00:00

Linux系統(tǒng)修復(fù)

2018-10-29 14:10:19

Linux軟件包命令

2025-01-26 09:35:45

2017-08-21 11:13:43

LinuxSnapcraft Snap軟件包

2021-01-06 13:03:22

UbuntuDebianLinux

2024-05-09 10:26:14

2019-11-26 17:29:15

Adobe

2018-06-22 10:05:04

Arch LinuxDEB軟件包

2022-06-14 09:14:39

漏洞惡意依賴木馬

2020-02-05 14:05:21

Java技術(shù)數(shù)組

2012-03-14 14:30:13

Ubuntu軟件包

2010-02-05 14:46:20

Ubuntu軟件包

2019-09-25 09:20:33

機(jī)器學(xué)習(xí)Python數(shù)據(jù)科學(xué)

2018-06-11 08:50:46

LinuxArch Linux降級(jí)軟件包
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91在线观看免费网站| 在线观看欧美成人| 日本成年人网址| chinese偷拍一区二区三区| 精品一区二区综合| 国内成人精品视频| 夜夜春很很躁夜夜躁| 精品国产鲁一鲁****| 亚洲va国产va欧美va观看| 欧美亚洲爱爱另类综合| 国产草草影院ccyycom| 国产亚洲激情| 不卡毛片在线看| 在线 丝袜 欧美 日韩 制服| **欧美日韩在线| 欧美视频精品一区| 性生活免费观看视频| 污视频在线免费| 国产一区二区网址| 国产成人a亚洲精品| 深夜福利影院在线观看| 国产尤物久久久| 精品久久久久久久久久久久久久久| 日韩黄色片视频| 女人黄色免费在线观看| 国产精品久久午夜| 欧美激情论坛| 免费的黄色av| 韩国精品在线观看| 国产成人精品a视频一区www| 日本熟妇毛茸茸丰满| 91麻豆精品国产91久久久平台| 日韩av在线免费看| 人妻 日韩 欧美 综合 制服| 只有精品亚洲| 欧美三级日韩三级| 黄色高清无遮挡| 瑟瑟视频在线看| 亚洲高清在线精品| 国产尤物av一区二区三区| 麻豆tv入口在线看| 亚洲国产精品二十页| 欧美日韩在线一区二区三区| 日本免费一区视频| 成人在线综合网站| 亚洲在线视频福利| 国产麻豆91视频| 精品一区二区三区免费观看| 国产精品在线看| 日韩欧美一级大片| 男女激情视频一区| 国产精品久久77777| 成人免费视频国产免费| 亚洲欧美日韩一区在线观看| 亚洲18私人小影院| 日韩成年人视频| 99在线热播精品免费99热| 久久久久久国产精品| 免费无码毛片一区二区app| 欧美激情综合| 欧美日韩成人黄色| 久艹视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 日韩在线观看网站| 欧美亚洲色综久久精品国产| 欧美色图一区| 色偷偷偷亚洲综合网另类| 美女福利视频网| 99久久综合狠狠综合久久aⅴ| 最新91在线视频| 放荡的美妇在线播放| 欧美伊人影院| 久久人人爽人人| 在线观看免费av片| 日韩精品亚洲一区二区三区免费| 国产精品久久久久久久av大片 | 日韩一级成人av| 无码人妻一区二区三区一| 高清欧美性猛交xxxx黑人猛| 日韩成人中文电影| 久久精品—区二区三区舞蹈| 99精品视频在线| 久久久久成人网| 免费av中文字幕| 卡一卡二国产精品| 国产91免费视频| 欧美高清电影在线| 亚洲欧美综合在线精品| 欧美极品少妇无套实战| 小早川怜子影音先锋在线观看| 91精品办公室少妇高潮对白| 黄色片免费网址| 日韩高清三区| 日韩午夜在线视频| 亚洲国产成人精品激情在线| 青青青爽久久午夜综合久久午夜| 999国内精品视频在线| 日韩大胆人体| 亚洲久本草在线中文字幕| 日韩欧美在线播放视频| 91国产一区| 亚洲精品一区中文| 麻豆疯狂做受xxxx高潮视频| 日韩av网站免费在线| 99re视频在线观看| 国产乱视频在线观看| 亚洲一区二区美女| 日本国产一级片| 日韩欧美天堂| 欧美日韩电影在线观看| 天天干天天插天天射| 成人白浆超碰人人人人| 亚洲人成网站在线观看播放| 小h片在线观看| 精品欧美久久久| 日韩欧美在线视频播放| 国产一级久久| 国产精品免费看一区二区三区| 在线免费观看黄| 日韩欧美国产成人| 色哟哟无码精品一区二区三区| 日本不卡二三区| 日本精品视频网站| 日本激情视频网站| 亚洲福利一区二区| 欧美熟妇另类久久久久久多毛| 国产一区二区三区91| 98视频在线噜噜噜国产| 亚洲精品国产精品国| 亚洲人成精品久久久久久| 亚洲高清在线免费观看| 亚洲精华一区二区三区| 97精品一区二区三区| 精品久久久中文字幕人妻| 中文字幕人成不卡一区| 色七七在线观看| 精品久久电影| 国产精品福利网| 视频一区二区在线播放| 亚洲aaa精品| 日本人妻一区二区三区| 午夜精品国产| 91系列在线观看| av文字幕在线观看| 91精品欧美福利在线观看| 成人一级片免费看| 美女视频免费一区| 性刺激综合网| 欧美日韩伦理一区二区| 中文字幕在线视频日韩| 伊人免费在线观看| 国产精品蜜臀av| 91pony九色| 中文在线日韩| 国产精品初高中精品久久| 欧洲性视频在线播放| 亚洲精品在线免费播放| 日本少妇毛茸茸高潮| 99re热这里只有精品免费视频| www.射射射| 啪啪国产精品| 国产精品www| 美女隐私在线观看| 日韩写真欧美这视频| 青青草手机在线视频| 成人av免费观看| 男女午夜激情视频| 成人在线亚洲| 亚洲综合日韩中文字幕v在线| av理论在线观看| 亚洲国产精品系列| 91视频久久久| 亚洲精品视频在线| 黄色国产在线观看| 美女诱惑一区二区| 免费高清一区二区三区| 亚洲调教一区| 91欧美精品午夜性色福利在线| 欧美男男video| 亚洲开心激情网| 亚洲一区精品在线观看| 亚洲超碰精品一区二区| 中文字幕免费在线看线人动作大片| 久久99在线观看| 玩弄中年熟妇正在播放| 日韩av片子| 国产一区二区自拍| 欧美激情不卡| 97色在线视频| 91露出在线| 亚洲第一精品福利| 中文字字幕在线中文乱码| 亚洲一区二区视频在线| 久久精品国产亚洲av久| 国产一区二区网址| 玩弄japan白嫩少妇hd| 亚洲精品久久| 欧美一区二区三区电影在线观看| 国产精品日韩精品在线播放| 91国内产香蕉| 超碰在线免费播放| 亚洲人成网站777色婷婷| 国产美女三级无套内谢| 色8久久精品久久久久久蜜 | 婷婷久久综合九色综合伊人色| 娇妻被老王脔到高潮失禁视频| 国产白丝网站精品污在线入口| 国产一级特黄a大片免费| 最新日韩av| 欧美少妇在线观看| 日韩欧美字幕| 久久久com| 一区二区在线免费播放| 国产一区二区视频在线观看| 天堂中文av在线资源库| 色综合男人天堂| 免费av网站在线观看| 伊人久久免费视频| 日本1级在线| 亚洲成人aaa| 性做久久久久久久| 337p亚洲精品色噜噜| 最近中文字幕免费观看| 日韩欧美在线视频免费观看| 日韩精品成人在线| 亚洲一区二区视频| 欧美成人精品欧美一级| 国产精品美女视频| 国产91丝袜美女在线播放| 久久午夜羞羞影院免费观看| 中文字幕人妻一区二区三区| 国产成人午夜99999| 一个人看的视频www| 国产一区二区三区在线观看精品| 色婷婷综合网站| 奇米精品一区二区三区在线观看一 | 国产激情视频在线观看| 日韩在线观看网站| 久热国产在线| 欧美大成色www永久网站婷| 快射视频在线观看| 欧美成人激情在线| a级网站在线播放| 久久综合久中文字幕青草| 国产在线观看免费麻豆| 免费av一区二区| 超碰在线网址| 欧美激情精品久久久久| 丁香花在线电影| 国外成人在线视频| 99热99re6国产在线播放| 欧美激情一区二区三区在线视频观看 | 亚洲精品人妻无码| 亚洲精品在线观看视频| 女人18毛片水真多18精品| 亚洲国产精品高清久久久| 天天操天天插天天射| 精品无码久久久久久国产| 久久精品a一级国产免视看成人| 亚洲天堂视频在线观看| 二区在线视频| 久久久国产成人精品| 欧美理论电影| 日韩av三级在线观看| 视频二区不卡| 日本高清+成人网在线观看| 91tv亚洲精品香蕉国产一区| 成人妇女免费播放久久久| 精品视频91| 国产亚洲精品自在久久| 欧美日韩xxxx| 日韩精品电影网站| 99成人在线视频| 成人免费性视频| 日一区二区三区| 红桃视频一区二区三区免费| 丁香天五香天堂综合| 蜜桃精品成人影片| 中文字幕一区二区三区在线观看| 538任你躁在线精品视频网站| 亚洲风情在线资源站| 91久久国产综合久久91| 欧美一级久久久久久久大片| 无码国产色欲xxxx视频| 日韩在线免费视频| heyzo在线欧美播放| 国产精品欧美一区二区三区奶水| 免费一级欧美在线大片| 看欧美日韩国产| 久久久久免费av| 国产a级一级片| 激情成人午夜视频| 国产麻豆天美果冻无码视频| 中文字幕一区二区三区在线不卡| 日韩欧美性视频| 666欧美在线视频| 日本黄在线观看| 欧美黑人xxxⅹ高潮交| 激情亚洲影院在线观看| 操一操视频一区| 日韩在线欧美| 国产视频九色蝌蚪| 国产精品一区二区三区网站| 亚洲色成人网站www永久四虎| 亚洲最大成人综合| 一级黄色小视频| 亚洲日韩中文字幕在线播放| 黑人另类精品××××性爽| 国产日产欧美a一级在线| 日本天堂一区| 99久久免费观看| 寂寞少妇一区二区三区| 中文字幕人妻一区二区三区在线视频| 亚洲综合久久久久| 中文字幕人妻互换av久久| 精品无人国产偷自产在线| 日本大片在线播放| 91日本视频在线| 日韩精品欧美激情一区二区| 一女被多男玩喷潮视频| 国产精品一区在线| 九九这里只有精品视频| 在线观看国产精品网站| 天堂中文在线8| 97视频色精品| 欧美黑白配在线| 国产真人做爰毛片视频直播| 国产乱人伦偷精品视频免下载| 2014亚洲天堂| 欧美区在线观看| 日本中文字幕伦在线观看| 国产精品91一区| 国产成人三级| 亚洲视频在线a| 欧美激情一区二区在线| 国产精品欧美综合| 国产一区二区三区在线看| 丝袜美腿一区| 日本一区二区三区视频在线观看 | 日韩毛片在线一区二区毛片| 97在线视频免费观看| 国产欧美三级电影| 无码人妻少妇伦在线电影| 粉嫩aⅴ一区二区三区四区| 久久久久成人网站| 亚洲成av人影院在线观看| av在线理伦电影| 久久久久网址| 日韩中文字幕不卡| 羞羞在线观看视频| 在线电影院国产精品| 超碰在线caoporen| 成人自拍偷拍| av成人天堂| av黄色免费网站| 欧美色男人天堂| 国产成人l区| 福利视频一区二区三区| 91久久综合| 美女洗澡无遮挡| 欧美午夜免费电影| 黄色成年人视频在线观看| 91精品综合久久| 在线精品一区二区| 白嫩情侣偷拍呻吟刺激| 日韩欧美高清在线视频| 天天在线视频色| 成人欧美一区二区三区视频xxx| 日韩午夜高潮| 久久久精品成人| 日韩一区二区精品葵司在线| 国产在线精彩视频| 亚洲国产精品一区在线观看不卡| 精品一区二区三区免费观看| 久久黄色免费网站| 亚洲精品视频网上网址在线观看| 一呦二呦三呦精品国产| 一区二区视频在线免费| 国产v日产∨综合v精品视频| 国产黄色片免费看| www.亚洲一区| 国产精品白丝av嫩草影院| 成人免费无码av| 一区二区三区在线视频播放 | 91在线观看视频| 97超碰国产在线| 91国产高清在线| 偷偷www综合久久久久久久| 亚洲 欧美 日韩在线| 欧美日本一道本在线视频| 精品精品导航| 亚洲欧美国产精品桃花| 成人福利在线看| 一本久道久久综合无码中文| 亚州av一区二区| 午夜精品久久99蜜桃的功能介绍| 最近中文字幕免费视频| 欧美成人一区二区三区| 国产欧美在线观看免费| 中国丰满人妻videoshd |