webpack, ts-loader 之提高 typescript 编译速度

作者: tww844475003 分类: TypeScript 发布时间: 2022-07-17 11:59

设置 transpileOnly 为 true, 就会关闭 typescript 类型检查,只做编译。

module.exports = {
  ...
  module: {
    rules: [
      {
        test: /\.tsx?$/i,
        use: [
          {
            loader: 'ts-loader',
            options: {
              transpileOnly: true
            }
          }
        ],
        exclude: /node_modules/
      }
    ]
  },
  ...
}

构建速度对比

构建速度有明显提升,但是关闭了 typescript 类型检查功能,类型错误不会阻断编译。这个明显是不好的,那如何解决了,即想速度有所提升,同时又保持类型检查。答案是肯定的,因为社区如此的强大。

下面我们来偿试一个 webpack 社区的一个类型检查的插件。

fork-ts-checker-webpack-plugin

安装

npm i -D fork-ts-checker-webpack-plugin

使用

const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin')

module.exports = {
  ...
  module: {
    rules: [
      {
        test: /\.tsx?$/i,
        use: [
          {
            loader: 'ts-loader',
            options: {
              transpileOnly: true
            }
          }
        ],
        exclude: /node_modules/
      }
    ]
  },
  plugins: [
    new ForkTsCheckerWebpackPlugin()
  ]
}

编译一下试试

速度有明显提升,typescript 类型检查功能也没有问题。

注意:使用插件如果报 TypeError: Class extends value undefined is not a constructor or null

TypeError: Class extends value undefined is not a constructor or null
at Object. (D:\tang-last\ts-demo\node_modules\fork-ts-checker-webpack-plugin\lib\iss
at Module._compile (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:192:
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Module.require (internal/modules/cjs/loader.js:1089:19)
at require (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:161:20)
at Object. (D:\tang-last\ts-demo\node_modules\fork-ts-checker-webpack-plugin\lib\hoo:14:31)
at Module._compile (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:192:
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Module.require (internal/modules/cjs/loader.js:1089:19)
at require (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:161:20)
at Object. (D:\tang-last\ts-demo\node_modules\fork-ts-checker-webpack-plugin\lib\hoo at Module._compile (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:192:
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Module.require (internal/modules/cjs/loader.js:1089:19)
at require (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:161:20)
at Object. (D:\tang-last\ts-demo\node_modules\fork-ts-checker-webpack-plugin\lib\plu
at Module._compile (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:192:
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Module.require (internal/modules/cjs/loader.js:1089:19)
at require (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:161:20)
at Object. (D:\tang-last\ts-demo\node_modules\fork-ts-checker-webpack-plugin\lib\ind
at Module._compile (D:\tang-last\ts-demo\node_modules\v8-compile-cache\v8-compile-cache.js:192:

遇到错,建议大家不要慌,先到官网去查他们的版本依赖关系。

官方给的说明:

该插件需要:node 12.13.0+,webpack5+,typescript 3+

如果你使用的 typescript 2.1 – 2.6,请使用 4.x.x 版本的插件

如果你使用的 webpack4,typescript 2.7-3.5.3 请使用 6.x.x 版本的插件

打赏 微海报 分享
前端开发那点事
微信公众号搜索“前端开发那点事”
node.js typescript webpack webpack5 web前端 web前端开发 前端开发那点事

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

更多阅读
  • db.create_all() 报错,flask_sqlalchemy 创建数据库找不到上下文
  • python3.11 flask、flask-script 常见错误分析及解决
  • vue3 transition 实现动画淡入淡出效果
  • git 提交错误 send-pack: unexpected disconnect while reading sideband packet
  • export ‘Switch’ (imported as ‘Switch’) was not found in ‘react-router-dom’
  • uni-app 使用 vue-baidu-map 模块实现指定区域内打卡
  • js有向图验证是否有回路(环),antv-x6、antv-g6
  • vue-cli4 你不一定知道的隐藏检查功能 – vue inspect
  • nodejs 实现从excel批量导入数据,并取关键词首字母
  • aos.js 超赞页面滚动元素动画jQuery动画库
  • js 面向对象编程之多继承
  • SASS基本用法指南
  • js的数组排序算法及查找字符串中出现次数最多的字符算法
  • http-server 使用详解
标签云
@vueuse/core chrome css css3 element-ui es6 flask gogocode HTTP HTTP通信 javascript jest jquery js node node.js npm object python react regex rollup selenium TCP连接 tree typescript vite vue vue-cli vue-codemirror vue.js vue3 vue3 hooks vue3.js vueuse webpack webpack5 web前端 web前端开发 前端开发 前端开发那点事 多态 数据结构 设计模式 面向对象编程

深圳SEO优化公司黄色网站seo优化济宁市谷歌网站优化简阳网站seo优化服务网站优化推广的注意事项有哪些通州区网站优化排行榜临沂网站优化链接代码优化网站图片太大打开慢从化企业网站推广优化费用房山网站推广优化排名河南企业网站优化推广怎么样网站首页搜索引擎优化情况评价丹灶网站优化团队网站的关键词怎么优化优化后的网站岳阳网站优化收费重庆外贸网站优化武汉网站优化那家好安远网站优化渠道冠县网站关键词优化网站关键词优化采选火30星b2b网站优化教程最好的网站优化的方法福田论坛网站优化在线推广网站快速优化排名软件郑州网站排名优化网站搜索引擎优化改善方面网站关键词优化方案实力强的网站推广与优化团队扬州优化网站排名洛阳网站seo优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化