如何优雅的发布一个 TypeScript 软件包?

这篇具有很好参考价值的文章主要介绍了如何优雅的发布一个 TypeScript 软件包?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

向 NPM 发布软件包本身并不是一个特别困难的挑战。但是,配置你的 TypeScript 项目以取得成功可能是一个挑战。你的软件包能在大多数项目上运行吗?用户能否使用类型提示和自动完成功能?它能与 ES Modules (ESM) 和 CommonJS (CJS) 风格的导入一起使用吗?

阅读完本篇文章后,你将了解如何使你的 TypeScript 包在任何(或大多数)JavaScript 和 TypeScript 项目中更易于访问和使用,包括浏览器支持!

创建 TypeScript 项目 ​

如果你正在阅读本文,那么你很可能已经建立了一个 TypeScript 项目。如果这样做,你可能想跳到后续步骤或留下来检查是否存在差异。

让我们首先创建基本 Node.js 项目并添加 TypeScript 作为开发依赖项:

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

你可能希望在 src 文件夹中构建代码。因此,让我们在其中创建包的入口点:

mkdir src
touch src/index.ts

现在,Node.js 和浏览器不理解 TypeScript,因此我们需要设置 tsc (TypeScript 编译器)将 TypeScript 代码编译为 JavaScript。让我们通过运行以下命令将 tsconfig.json 文件添加到我们的项目中:

npx tsc --init

如果我们现在运行 npx tsc,它会扫描我们的文件夹并在与 .ts 文件相同的目录中创建 .js 文件(这是不可取的)。让我们在运行之前添加更好的配置,以免造成混乱。

将以下行添加到 tsconfig.json

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

我们还向 package.json 添加一个“build”脚本:

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

如果我们现在运行 npm run build ,一个新的 dist 文件夹将出现,其中包含已编译的 JavaScript。如果你使用的是 Git,请确保将 dist 文件夹添加到 .gitignore 中。

设置 tsc 以获得最佳开发者体验 ​

我们已经可以将 TypeScript 编译为 JavaScript。但是,如果你按原样将其发布到 npm,则只能在其他 JavaScript 项目中无缝使用它。此外,默认目标配置是“es2016”,而现代浏览器最多仅支持“es2015”。那么让我们解决这个问题吧!

首先,让我们将目标(target)更改为 es2015 (或 es6 ,因为它们是相同的)。 esModuleInterop 默认为 true。让我们保持原样,因为它通过允许 ESM 样式导入来提高兼容性。

我们使用 TypeScript 都有一个原因:类型!但是,如果你现在就构建并发布你的软件包,那么它将不会发布任何类型。让我们通过将 declaration 设置为 true 来解决这个问题。这将与 .js 文件一起生成声明文件(.d.ts)。仅凭这一点,你的软件包就能在 TypeScript 项目中使用,甚至在 JavaScript 项目中也能提供类型提示。

声明文件在改善支持和开发人员体验方面已经发挥了很大作用。然而,我们可以通过添加 declarationMap 来更进一步。这样,将生成源映射 (.d.ts.map),以将我们的声明文件 (.d.ts) 映射到我们的原始 TypeScript 源代码 (.ts)。这意味着代码编辑器在使用“转到定义”时可以转到原始 TypeScript 代码,而不是编译后的 JavaScript 文件。

当我们这样做时,sourceMap 将添加源映射文件 (.js.map),这些文件允许调试器和其他工具在实际处理发出的 JavaScript 文件时显示原始 TypeScript 源代码。

使用 declarationMap 或 sourceMap 意味着我们还需要将源代码与软件包一起发布到 npm。

综上所述,这是我们最终的 tsconfig.json 文件:

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

package.json

这里的事情要简单得多。当用户导入包时,我们需要指定包的入口点。因此,让我们将 main 设置为 dist/index.js

除了入口点之外,我们还需要指定主要类型声明文件。在这种情况下,这将是 dist/index.d.ts

我们还需要指定随包一起提供哪些文件。当然,我们需要发送构建的 JavaScript 文件,但由于我们使用的是 sourceMapdeclarationMap ,所以我们还需要发送 src

这是包含所有内容的参考 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"
  }
}

发布到 NPM​

发布到 NPM 并不困难。我强烈建议你查看官方说明,但以下是一般步骤:

  1. 确保你的 package.json 设置正确。
  2. 构建项目(如果你遵循指南,则使用 npm run build )。
  3. 如果你还没有登录,请使用 npm login 向 npm 进行身份验证(你需要一个 npm 帐户)。
  4. 运行 npm publish

请记住,如果你更新软件包,则需要在再次发布之前增加 package.json 中的 version 选项。

有更复杂的(和推荐的)方法来进行发布,例如使用 GitHub Action 和 releases,特别是对于开源包,但这超出了本文的范围。文章来源地址https://www.toymoban.com/news/detail-817361.html

到了这里,关于如何优雅的发布一个 TypeScript 软件包?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac ❀ 如何在MacOS上安装pip软件包

    以 requests 工具包为例:

    2024年01月18日
    浏览(58)
  • 如何列出 Ubuntu 和 Debian 上已安装的软件包

    当你安装了 Ubuntu 并想好好用一用。但在将来某个时候,你肯定会遇到忘记曾经安装了那些软件包。 这个是完全正常。没有人要求你把系统里所有已安装的软件包都记住。但是问题是,如何才能知道已经安装了哪些软件包?如何查看安装过的软件包呢? 如果你经常用 apt 命令

    2024年02月07日
    浏览(57)
  • 如何验证 ubuntu 系统中是否已经安装过某个软件包?

    在 Ubuntu 上,可以使用 dpkg 命令来验证某个软件包是否已经安装。 打开终端。 输入以下命令: 例如,如果要验证 vim 是否已安装,可以输入: 按下 Enter 键运行命令。 如果软件包已安装,你将看到关于该软件包的详细信息,包括版本号等,这里以查询 vim 为例,截图如下:

    2024年02月11日
    浏览(58)
  • pycharm教程:如何在pycharm中安装软件包(超详细)

      首先,pycharm的功能十分强大,但是有很多刚接触的朋友不太懂得如何安装软件包。接下来我就来为大家演示这一过程。   1.打开我们的pycharm,然后点击文件(file),再点击(设置)setting 2.进入setting(设置),找到python解释器   3.如上图所看到的,在图的左边有一个小小

    2024年02月12日
    浏览(43)
  • 如何把openwrt的ipk软件包安装到ubuntu上

    前提:都是arm64的架构的软件包。 下载openwrt的ipk软件包 1. 从https://pkgs.org/ 查找下载软件包: 本文以swconfig软件包为例,下载swconfig和相关的依赖软件包: swconfig_12_aarch64_cortex-a72.ipk libuci20130104_2021-10-22-f84f49f0-6_aarch64_cortex-a72.ipk libubox20220515_2022-05-15-d2223ef9-1_aarch64_cortex-a72.ipk l

    2024年01月25日
    浏览(49)
  • 在linux下如何使用yum命令查看安装了哪些软件包

    Linux 系统下 yum 命令查看安装了哪些软件包: 1. 使用 yum 查找软件包 命令: 2. 列出所有可安装的软件包 命令: 3. 列出所有可更新的软件包 命令: 4. 列出所有已安装的软件包 命令: 5. 列出所有已安装但不在 Yum Repository 内的软件包 命令: 6. 使用 yum 获取软件包信息 命令:

    2024年02月02日
    浏览(79)
  • 详解Windows系统下面如何查看CUDA、cuDNN、Python和各个软件包的版本

    这个题目网络上有很多的讲解,但是 查看CUDA、cuDNN版本 和 查看Python与自身各个软件包 是分开的,且cuDNN版本的查看方式似乎已经过时【截止2023-10-23】。由于自身需要且出于回馈 互联网大学 的目的,将相关内容重新整理在此篇博客中。 方法1:在Windows终端中通过以下3条下命

    2024年02月04日
    浏览(57)
  • E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。

      安装包缺少依赖关系时,系统提示 “您也许需要运行 apt --fix-broken install  ” 来修正上面的错误。一般运行这句命令可以顺利完成,但也有失败的案例 sudo apt --fix-broken install 这时候会提示你 是否安装依赖包 Y 如果后面没有报错就安装成功了,运气不好我的有问题    命令

    2024年02月15日
    浏览(43)
  • 没有可用的软件包 python,但是它被其它的软件包引用了

    按照网上找的解决办法: 然而我还是会有这个问题:  后来我注意到错误提示里有“取代它... python-is-python3” 然后就试着将sudo apt install python 改为sudo apt install python-is-python3  就可以了  输入python命令可以看到:  

    2024年02月15日
    浏览(68)
  • RT-Thread 软件包-软件包分类-IoT-WebNet①

    中文页 | English WebNet 软件包是 RT-Thread 自主研发的,基于 HTTP 协议的 Web 服务器实现,它不仅提供设备与 HTTP Client 通讯的基本功能,而且支持多种模块功能扩展,且资源占用少、可裁剪性强,充分满足开发者对嵌入式设备服务器的功能需求。 WebNet 软件包功能特点如下: 支持

    2024年01月17日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包