最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決vue cli使用typescript后打包巨慢的問題

 更新時間:2019年09月30日 08:58:51   作者:子物  
這篇文章主要介紹了解決vue cli使用typescript后打包巨慢的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近新開了一個項目,雖然用的是 vue 技術(shù)棧,但是為了項目的健壯性,還是強(qiáng)上了 typescript, 于是引出了下面的問題。

問題

之前使用過 ts-loader 打包 react 項目,給我的感覺就是巨慢,開發(fā)環(huán)境下,每次保存后,需要等10秒鐘左右才能構(gòu)建完成,當(dāng)時為了解決這個問題,把 ts-loader 替換成了 babel 的 typescript 插件,結(jié)果是非常的快,每次保存一秒中之內(nèi)就能完成構(gòu)建。這次在 vue 中使用 typescript,開發(fā)環(huán)境下還算快,但是構(gòu)建生產(chǎn)包時,進(jìn)程都能夠被卡死,體驗非常糟糕,接下來講解如何替換 typescript 構(gòu)建工具。

替換 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/Desktop/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/Desktop/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,所以這里也需要用到這個工具才能進(jìn)行修改,代碼如下:

// 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"
  ]
}

最后再打包,嗯~ 比之前快多了!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue連接本地服務(wù)器的實現(xiàn)示例

    vue連接本地服務(wù)器的實現(xiàn)示例

    本文主要介紹了vue連接本地服務(wù)器的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • 使用elementuiadmin去掉默認(rèn)mock權(quán)限控制的設(shè)置

    使用elementuiadmin去掉默認(rèn)mock權(quán)限控制的設(shè)置

    這篇文章主要介紹了使用elementuiadmin去掉默認(rèn)mock權(quán)限控制的設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue3使用MD5加密實戰(zhàn)案例(清晰明了)

    Vue3使用MD5加密實戰(zhàn)案例(清晰明了)

    MD5是一種信息摘要算法(對稱加密),一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個128位(16字節(jié))的散列值,用來確保信息傳輸完整一致性,這篇文章主要給大家介紹了關(guān)于Vue3使用MD5加密的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 淺談vue的第一個commit分析

    淺談vue的第一個commit分析

    這篇文章主要介紹了淺談vue的第一個commit分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Vue實現(xiàn)數(shù)值型輸入框并限制長度

    Vue實現(xiàn)數(shù)值型輸入框并限制長度

    這篇文章主要介紹了Vue實現(xiàn)數(shù)值型輸入框并限制長度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue學(xué)習(xí)筆記之v-if和v-show的區(qū)別

    vue學(xué)習(xí)筆記之v-if和v-show的區(qū)別

    本篇文章主要介紹了vue學(xué)習(xí)筆記之v-if和v-show的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Vue?CompositionAPI中watch和watchEffect的區(qū)別詳解

    Vue?CompositionAPI中watch和watchEffect的區(qū)別詳解

    這篇文章主要為大家詳細(xì)介紹了Vue?CompositionAPI中watch和watchEffect的區(qū)別,文中的示例代碼簡潔易懂,希望對大家學(xué)習(xí)Vue有一定的幫助
    2023-06-06
  • ant design vue中表格指定格式渲染方式

    ant design vue中表格指定格式渲染方式

    這篇文章主要介紹了ant design vue中表格指定格式渲染方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vuecli+AXdownload下載組件封裝?+css3下載懸浮球動畫效果

    vuecli+AXdownload下載組件封裝?+css3下載懸浮球動畫效果

    當(dāng)觸發(fā)下載功能的時候,會觸發(fā)一個下載動畫,下載懸浮球會自動彈出,并且閃爍提示有新的下載任務(wù)直到下載任務(wù)完場提示,接下來通過本文介紹vuecli+AXdownload下載組件封裝?+css3下載懸浮球動畫效果,需要的朋友可以參考下
    2024-05-05
  • 解決修復(fù)報錯Error in render:TypeError:Cannot read properties of undefined(reading ‘ipconfig‘)問題

    解決修復(fù)報錯Error in render:TypeError:Cannot read&n

    這篇文章主要介紹了解決修復(fù)報錯Error in render:TypeError:Cannot read properties of undefined(reading ‘ipconfig‘)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

区。| 吉安市| 志丹县| 安福县| 巩义市| 晋中市| 改则县| 婺源县| 城口县| 石林| 赣榆县| 大冶市| 乌拉特后旗| 梨树县| 武穴市| 山阳县| 紫阳县| 盐城市| 舞钢市| 龙岩市| 包头市| 淳安县| 垦利县| 建昌县| 永靖县| 天等县| 临湘市| 丰县| 垣曲县| 洛浦县| 泌阳县| 额济纳旗| 苍南县| 岗巴县| 永兴县| 安图县| 筠连县| 沧源| 芦溪县| 兴安县| 德兴市|