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

时间:2018-09-05 15:45:48

标签: node.js typescript webpack ts-loader

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

我正在使用 webpack ts-loader fork-ts-checker-webpack-plugin

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

  1. 该库的dev版本(未缩小的,内联源地图等)
  2. 该库的产品版本(精简版+单独的源映射文件)
  3. 类型声明

前2个选项与fork-ts-checker-webpack-plugin一起使用效果很好。通过将线程加载器和缓存加载器投入使用,事情变得更好了。但是,它们的工作方式不允许释放.d.ts文件。

所以我想找出什么是发出此类文件的最佳方法。

现在我看到的选项:

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

一般来说更快些?还有另一种方法吗?


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

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

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

此代码将生成一个子进程,并与webpack要做的任何事情并行运行。因此,现在webpack完全不必担心Typescript类型。

1 个答案:

答案 0 :(得分:0)

如果您打算通过npmyarn运行webpack,则前两个步骤意味着-开发和产品构建将由webpack multiconfig处理。 然后通过npm / yarn自定义post command生成类型生成步骤,例如postbuild(如果提供了build脚本

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

所有步骤都是通过执行单个命令进行的

yarn build

npm run build