解决vue cli使用typescript后打包巨慢的问题
前言
最近新开了一个项目,虽然用的是 vue 技术栈,为了项目的健壮性,还是强上了 typescript, 于是引出了狼蚁网站SEO优化的问题。
问题
之前使用过 ts-loader 打包 react 项目,给我的感觉就是巨慢,开发环境下,每次保存后,需要等10秒钟左右才能构建完成,当时为了解决这个问题,把 ts-loader 替换成了 babel 的 typescript 插件,结果是非常的快,每次保存一秒中之内就能完成构建。这次在 vue 中使用 typescript,开发环境下还算快,构建生产包时,进程都能够被卡死,体验非常糟糕,接下来讲解如何替换 typescript 构建工具。
替换 ts-loader
修改 vue webpack 配置之前,我们需要知道 vue 是如何配置 ts-loader的,运行如下代码,输出 webpack 配置文件
vue inspect > output.js
打开 output.js 搜索 ts-loader,可以看到如下配置
/ config.module.rule('ts') / { test: /\.ts$/, use: [ / config.module.rule('ts').use('cache-loader') / { loader: 'cache-loader', options: { cacheDirectory: '/Users/edz/Desk/project/senguo/cashier-admin/node_modules/.cache/ts-loader', cacheIdentifier: 'aee3033a' } }, / config.module.rule('ts').use('babel-loader') / { loader: 'babel-loader' }, / config.module.rule('ts').use('ts-loader') / { loader: 'ts-loader', options: { transpileOnly: true, appendTsSuffixTo: [ '\\.vue$' ], happyPackMode: false } } ] }, / config.module.rule('tsx') / { test: /\.tsx$/, use: [ / config.module.rule('tsx').use('cache-loader') / { loader: 'cache-loader', options: { cacheDirectory: '/Users/edz/Desk/project/senguo/cashier-admin/node_modules/.cache/ts-loader', cacheIdentifier: 'aee3033a' } }, / config.module.rule('tsx').use('babel-loader') / { loader: 'babel-loader' }, / config.module.rule('tsx').use('ts-loader') / { loader: 'ts-loader', options: { transpileOnly: true, happyPackMode: false, appendTsxSuffixTo: [ '\\.vue$' ] } } ] }
可以看到使用到了 ts-loader, 还使用到了 babel, 这倒是为我们后期的配置提供了不少方便。
删除 ts-loader 的配置,因为 vue webpack 的配置使用的是 webpack-chain,所以这里也需要用到这个工具才能进行修改,代码如下
// vue.config.js module.exports = { chainWebpack: config => { config.module.rule('ts').uses.delete('ts-loader') config.module.rule('tsx').uses.delete('ts-loader') } }
接着安装 babel 的 typescript 插件
yarn add @babel/preset-typescript @babel/plugin-transform-typescript
然后修改 babel.config.js 如下
module.exports = { presets: [ '@vue/app', "@babel/preset-typescript" ], plugins: [ "@babel/plugin-transform-typescript" ] }
如果你在代码中使用到了 jsx, 那么可能还需要添加如下配置项,反正我是遇到了解析 jsx 出错的问题。
module.exports = { presets: [ '@vue/app', ["@babel/preset-typescript", { "allExtensions": true, "isTSX": true }], ], plugins: [ "@babel/plugin-transform-typescript" ] }
再打包,嗯~ 比之前快多了!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程