因爲最近在重寫我的的原生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