ts-loader

使用 ts-loader 编译 ts ,优点是能提前暴露出如参数类型不匹配的错误,缺点是不能转换 promise 等 es6+ 语法。

babel-loader

安装 @babel/preset-typescript 预设,使得 babel-loader 可以编译 ts,promise 等语法也能转换,缺点是参数类型不匹配等错误在编译时会直接通过。

  1. // babel.config.js
  2. module.exports = {
  3. presets: [
  4. ['@babel/preset-env', {
  5. useBuiltIns: 'usage',
  6. corejs: 3
  7. }],
  8. ['@babel/preset-typescript']
  9. ]
  10. }

打包前校验

使用 tsc 命令在 babel-loader 对 ts 进行编译前先校验,就可以同时实现暴露错误和兼容性。noEmit 参数表示只校验,不输出文件。

  1. yarn tsc --noEmit && yarn webpack
  1. "scripts": {
  2. "test": "echo \"Error: no test specified\" && exit 1",
  3. "build": "npm run ck && webpack",
  4. "serve": "webpack serve",
  5. "ck": "tsc --noEmit"
  6. },