web*_*per 8 node.js typescript webpack ts-loader
为 Typescript 项目(库)发出类型声明以及代码转译和捆绑的最有效方法是什么?
我正在使用webpack、ts-loader和fork-ts-checker-webpack-plugin。
在一个构建周期(构建命令)中,我试图获得:
前 2 个选项与 fork-ts-checker-webpack-plugin 配合良好。随着线程加载器和缓存加载器的加入,事情变得更好了。但是,它们的工作方式不允许发出 .d.ts 文件。
所以我想弄清楚发出此类文件的最佳方式是什么。
现在我看到的选项:
tsc在代码捆绑结束时使用。spawnSync例如,使用 运行它。emitDeclarationOnly模式下独占运行 webpack{transpileOnly: false, happyPackMode: false},但这违背了使用线程的目标一般来说,什么可能更快?还有另一种方法吗?
我自己的答案暂时似乎有效:
在webpack.config.js中导出 webpack 配置的部分上方,添加以下内容(调整参数以满足您的需要):
spawn("tsc", ["-p", "src", "--emitDeclarationOnly", "--declaration", "--declarationDir", "dist/@types", "--skipLibCheck"]);
Run Code Online (Sandbox Code Playgroud)
这段代码将产生一个子进程并与 webpack 将要执行的任何操作并行运行。所以现在 webpack 完全不用担心 Typescript 类型了。
如果您的目标是运行 webpacknpm或那么前两个步骤意味着 - dev 和 prod 构建将由 webpack multiconfigyarn处理。然后通过 npm/yarn 自定义post 命令调用类型生成步骤,例如,如果提供了脚本postbuildbuild
"scripts": {
"postbuild": "tsc -p tsconfig.json --emitDeclarationOnly --declaration --declarationDir ./dist/@types --skipLibCheck",
"build": "webpack"
}
Run Code Online (Sandbox Code Playgroud)
所有步骤都是通过执行单个命令来完成的
yarn build
或者
npm run build