因为最近在重写我的的原生ts插件项目, 遇到了集成jest单测的需求, 单纯地使用ts-jest
+ ts-loader
会出现难以估计的错误, 因此决定使用babel
, 完美摒弃了传统的ts-loader
方案, 对于主要流程记录下.node
项目地址: ts-utility-plugins同时也欢迎
ts
新手和想提高的你, 参与到项目中来, 详情可阅读Wikiwebpack
PS: 先经过简单的配置, 让webpack
正常解析ts
, 而且于测试环境中正常执行.
题目已经说的很清楚了, babel7
的出现, 使得webpack
对于ts
文件的处理, 再也不依赖于ts-loader
等插件, 因此, 第一步就是和ts-loader
港拜拜.git
npm uninstall --save-dev ts-loader
PS: 对于依赖项的取舍, 暂时还未摸清, 凡事先用明白, 再去探究其原理or优化.
暂时只用到了如下几种插件:github
npm install --save-dev babel-loader @babel/preset-env @babel/preset-typescript @babel/plugin-proposal-class-properties @babel/plugin-proposal-object-rest-spread
.babelrc
的基本配置:web
{ "presets": [ "@babel/preset-env", "@babel/preset-typescript", ], "plugins": [ "@babel/plugin-proposal-class-properties", "@babel/plugin-proposal-object-rest-spread" ], }
webpack.config.ts
基本配置:typescript
module: { rules: [ { test: /\.(ts|js)?$/, use: 'babel-loader', exclude: /node_modules/, }, ], }
启动测试服务器, 已可正常解析.npm
上述步骤看似完美, 可是有一个致命的问题:json
对于ts的类型诊断error, webpack并不会抛出异常.
而咱们使用ts的目的不就是为了:bash
因此, 这个问题仍是值得解决的, 放到下一区块记录:服务器
接着上一小节说的, babel只负责ts的解析转换, 并不会作对应的类型检查, 因此须要自行构建.
在原tsconfig.json
中新增下列配置项:
{ "compilerOptions": { + "allowJs": true, + "target": "esnext", + "noEmit": true } }
原package.json
的scripts
字段中新增:
"scripts": { + "check": "tsc -w" },
1. 开启ts类型检查
npm run check
2. 启动开发服务器
npm run dev
Q: 上述步骤须要开启至少两个终端, 一个用于类型检查
, 另外一个用于开发服务器
, 是否有更优的解决方案?
A: 可参考下一条问题
Q: 在检测到ts类型错误时, webpack的构建并不会抛出异常?
A: 恰好遇到了这个问题, 参考该issue, 找到fork-ts-checker-webpack-plugin插件, 引入便可.
Q: 在ts文件发生变更时, fork-ts-checker-webpack-plugin没法即时反应类型检查的状况(只触发一次)?
A: 已知的issue
Q | A |
---|---|
webpack构建ts开发环境汇总篇 | 点这里 |
使用ts编写webpack.config.js ? |
点这里 |
我想经过script 标签引入插件? |
点这里 |
ts-loader 完美替代方案 |
点这里 |
集成jest 单测? |
点这里 |
若是构建的过程有任何疑惑, 能够加个人扣: 1766083035