vite+ts+vue3項(xiàng)目構(gòu)建


title: vite+ts+vue3項(xiàng)目構(gòu)建
date: 2022-06-09
description: vite+ts+vue3項(xiàng)目構(gòu)建的踩坑和補(bǔ)充


開始

之前的項(xiàng)目是基于vue-cli搭建的,最近想嘗試下vite搭建的項(xiàng)目和開發(fā)體驗(yàn)危彩,所以在這里我們將簡單的記錄下構(gòu)建的過程敛摘,以及在這些過程中出現(xiàn)的問題

基礎(chǔ)架子構(gòu)建

通過Vite中文網(wǎng)的搭建教程悲龟,我們可以清晰的知道如何創(chuàng)建一個vue+ts項(xiàng)目

我們這里使用yarn

yarn create vite my-project --template vue-ts

cd my-project
yarn
yarn dev

至此采转,我們基于vite的vue3+ts的基礎(chǔ)項(xiàng)目就生成了

vite.config.ts

alias

別名受扳,在vue-cli中我們可以自定義別名鞋真,那在vite中如何定義呢

//vite.config.ts
import path from "path"

function resolve(dir) {
    return path.resolve(__dirname, dir);
}
export default defineConfig({
    ...
    resolve: {
        alias: {
            "@": resolve("src/"),
            "@core": resolve("src/components"),
            services: resolve("src/services"),
        },
    }
});

相關(guān)鏈接

Sass|Scss

Css預(yù)處理器均函,在項(xiàng)目中使用的Scss
首先得安裝對應(yīng)的預(yù)處理器依賴

yarn add sass --dev

項(xiàng)目中我們還會給預(yù)處理器傳遞一些配置項(xiàng),比如全聚注入的變量虚青、方法之類的它呀,在這里配置如下

//vite.config.ts
export default defineConfig({
  ...
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@import '@/styles/mixins', '@/styles/variables';`
      }
    }
  }
})

ESLint

作為質(zhì)量把控的其中一道門檻,我們在項(xiàng)目中選擇eslint

如何配置eslint呢

yarn add eslint --dev
yarn create @eslint/config

執(zhí)行yarn create @eslint/config之后選擇項(xiàng)如下

eslint.png

然后我們執(zhí)行下

yarn add -D eslint-plugin-vue@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest

然后我們再來簡單看下:
首先是eslint-plugin-vue
這是Vue.js的官方ESLint插件棒厘,這個插件允許我們檢查.vue文件中的templatescript中的代碼和js中的代碼纵穿;
其次是typescript相關(guān)的ESLint插件
@typescript-eslint/eslint-plugin@typescript-eslint/parser
通過eslint-plugin-vue文檔中的安裝和配置介紹奢人,我們的配置文件大概如下

如果出現(xiàn)defineProps之類的no-undef warnings QA在此

// .eslintrc.json
{
    "env": {
        "browser": true,
        "es2021": true,
        "node": true,
        "vue/setup-compiler-macros": true
    },
    "extends": [
        "eslint:recommended",
        "plugin:vue/vue3-recommended",
        "plugin:@typescript-eslint/recommended"
    ],
    "parser": "vue-eslint-parser",
    "parserOptions": {
        "ecmaVersion": 2020,
        "parser": "@typescript-eslint/parser",
        "sourceType": "module"
    },
    "plugins": [
        "vue",
        "@typescript-eslint"
    ],
    "rules": {
    }
}

ESLint是搭建好了谓媒,我們想在運(yùn)行中進(jìn)行錯誤的提示,這明顯還差一步

方法一

因?yàn)?code>vite和rollup在一些插件上面可以兼容使用何乎,我們針對ESLint的插件剛好在此列句惯,
如何查詢呢土辩?可以在這里找到兼容的插件列表和一些其他基于vite的有關(guān)的東西

我們通過上面的地址可以知道@rollup/plugin-eslint是我們的目標(biāo),只需要

yarn add -D @rollup/plugin-eslint

我們就可以得到插件

然后在vite.config.ts中增加對應(yīng)的plugins就可以了

//vite.config.ts
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import eslint from "@rollup/plugin-eslint";
import path from "path";
export default defineConfig({
    plugins: [
        vue(),
        {
            ...eslint({
                include: "**/*.+(vue|js|jsx|ts|tsx)",
            }),
            enforce: "pre",
        }
    ],
    ...
});

方法二

基于viteplugin也是有的抢野,我們也可以選擇這類的插件去完成ESLint檢查功能

//vite.config.ts
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import eslint from "vite-plugin-eslint";
import path from "path";
export default defineConfig({
    plugins: [
        vue(),
        eslint()
    ],
    ...
});

總結(jié)

總體上來說拷淘,改動并不是特別大。體驗(yàn)也很好指孤。

本來說還有typescript的類型檢查也要運(yùn)行時檢測的启涯,看了下文檔,說的是Vite天然支持ts,Vite僅執(zhí)行.ts文件的轉(zhuǎn)譯工作恃轩,并不執(zhí)行任何類型檢查结洼。Vite使用esbuildTypeScript轉(zhuǎn)譯到JavaScript,約是tsc速度的 20~30 倍叉跛,同時HMR更新反映到瀏覽器的時間小于50ms补君。擁有更好的體驗(yàn),所以將類型檢查在開發(fā)階段默認(rèn)交給IDE昧互、以及構(gòu)建過程接管。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伟桅,一起剝皮案震驚了整個濱河市敞掘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌楣铁,老刑警劉巖玖雁,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盖腕,居然都是意外死亡赫冬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門溃列,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劲厌,“玉大人,你說我怎么就攤上這事听隐〔贡牵” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵雅任,是天一觀的道長风范。 經(jīng)常有香客問我,道長沪么,這世上最難降的妖魔是什么硼婿? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮禽车,結(jié)果婚禮上寇漫,老公的妹妹穿的比我還像新娘刊殉。我一直安慰自己,他們只是感情好猪腕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布冗澈。 她就那樣靜靜地躺著,像睡著了一般陋葡。 火紅的嫁衣襯著肌膚如雪亚亲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天腐缤,我揣著相機(jī)與錄音捌归,去河邊找鬼。 笑死岭粤,一個胖子當(dāng)著我的面吹牛惜索,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剃浇,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼巾兆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虎囚?” 一聲冷哼從身側(cè)響起角塑,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淘讥,沒想到半個月后圃伶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒲列,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年窒朋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝗岖。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡侥猩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抵赢,到底是詐尸還是另有隱情拭宁,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布瓣俯,位于F島的核電站杰标,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏彩匕。R本人自食惡果不足惜腔剂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驼仪。 院中可真熱鬧掸犬,春花似錦袜漩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至介褥,卻和暖如春座掘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柔滔。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工溢陪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人睛廊。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓形真,卻偏偏與公主長得像,于是被迫代替她去往敵國和親超全。 傳聞我的和親對象是個殘疾皇子咆霜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容