发出类型声明的最有效方法是啥?

Posted

技术标签:

【中文标题】发出类型声明的最有效方法是啥?【英文标题】:What's the most efficient way to emit type declarations?发出类型声明的最有效方法是什么? 【发布时间】:2019-02-10 19:57:04 【问题描述】:

以及为 Typescript 项目(库)发出类型声明以及代码转换和捆绑的最有效方法是什么?

我正在使用 webpackts-loaderfork-ts-checker-webpack-plugin

在一个构建周期(构建命令)中,我试图获得:

    库的开发版本(未缩小、内联源映射等) 库的 prod 版本(缩小 + 单独的源映射文件) 类型声明

前 2 个选项与 fork-ts-checker-webpack-plugin 配合得很好。随着线程加载器和缓存加载器的混合,事情变得更好了。但是,它们的工作方式不允许发出 .d.ts 文件。

所以我想弄清楚发出此类文件的最佳方式是什么。

现在我看到的选项:

    在代码捆绑结束时使用tsc。例如,使用 spawnSync 运行它。 创建另一个 webpack 配置对象以在 emitDeclarationOnly 模式下独占运行 webpack 使用 transpileOnly: false, happyPackMode: false 运行 ts-loader,但这违背了使用线程的目标

一般来说什么可能更快?还有其他方法吗?


暂时我自己的答案似乎有效:

在导出 webpack 配置的部分上方的 webpack.config.js 中,添加以下内容(调整参数以满足您的需要):

spawn("tsc", ["-p", "src", "--emitDeclarationOnly", "--declaration", "--declarationDir", "dist/@types", "--skipLibCheck"]);

这段代码将生成一个子进程并与 webpack 将要执行的任何操作并行运行。所以现在 webpack 完全不用担心 Typescript 类型了。

【问题讨论】:

【参考方案1】:

如果您打算通过npmyarn 运行webpack,那么前两个步骤意味着-dev 和prod 构建将由webpack multiconfig 处理。 然后由 npm/yarn custom post command 调用类型生成步骤,例如postbuild 如果提供了build 脚本

"scripts": 
    "postbuild": "tsc -p tsconfig.json --emitDeclarationOnly --declaration --declarationDir ./dist/@types --skipLibCheck",
    "build": "webpack"

所有步骤都通过执行单个命令来完成

yarn build

npm run build

【讨论】:

以上是关于发出类型声明的最有效方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ruby,获取给定 URL 的内容类型的最有效方法是啥?

在 Powershell 中,按记录类型拆分大型文本文件的最有效方法是啥?

在 c# 中拥有一个采用任何类型的可索引列表的方法的最有效方法是啥

从向量中提取最小值、最大值和中值的最有效方法是啥

使用 PHP 在一个字符串中搜索多个标记的最有效方法是啥?

检查对象是不是为值类型的最有效方法