Vue3+Vite+TS+Eslint(Airbnb規則)搭建生產項目,踩坑詳記(一):初始化,引入Airbnb

2022-01-18 猿叨叨

文章首發於掘金同名帳號,詳情點擊閱讀原文查看。

鑑於發現有公眾號未經允許私自轉發,為方便維權,後續文章將多平臺同步更新。

前段時間領導告知公司將開啟一個全新的項目。

從零開始,如果不嘗試一下最近火熱的 Vue3 + Vite 豈不是白白浪費了這麼好的吃螃蟹的機會。

說幹就幹,然後就開始讀各種文檔,從 0 開始,一步一步搭完這個項目到可以正常開發,這對於我一個第一次搭生產項目的菜雞來說,著實艱難。

到今天,項目已經進入聯調階段,並且已經在環境上部署成功可以正常訪問。這個實驗也算是有了階段性的成功吧,因此來寫文章記錄此次Vue3項目搭建歷險記。

下載.jfif

第一篇文章主要是項目初始化和ESLint導入,廢話不多說,開整。

初始化項目

按照自己需要的框架選擇就可以了,我這裡用的Vue3+TS。初始化完成後的目錄結構如下:

目錄結構
啟動項目

執行 npm run dev,大概率會直接報錯,因為項目默認啟動在3000埠,可能會被拒絕。

錯誤截圖

解決這個問題,我們需要在根目錄下的 vite.config.ts 文件中修改開發伺服器的配置,手動指定埠號。

修改開發伺服器

修改完成後重新啟動項目,就可以訪問了。

首頁添加ESLint支持eslint只有開發階段需要,因此添加到開發階段的依賴中即可
npm install eslint --save-dev

在VS Code中安裝eslint插件,以在開發中自動進行eslint校驗
module.exports = {
  root: true,
  env: {
    browser: true, // browser global variables
    es2021: true, // adds all ECMAScript 2021 globals and automatically sets the ecmaVersion parser option to 12.
  },
  parserOptions: {
    ecmaVersion: 12,
  },
}

引入規則為了規範團隊成員代碼格式,以及保持統一的代碼風格,項目採用當前業界最火的 Airbnb規範 ,並引入代碼風格管理工具 Prettier 。eslint-plugin-vue

ESLint官方提供的Vue插件,可以檢查 .vue文件中的語法錯誤

npm install eslint-plugin-vue

// .eslintrc.js
...
extends: [
    'plugin:vue/vue3-recommended' // ++
]
...

eslint-config-airbnb-base

Airbnb基礎規則的eslint插件

// npm version > 5
npx install-peerdeps --dev eslint-config-airbnb-base

// .eslintrc.js
...
extends: [
    'plugin:vue/vue3-recommended',
    'airbnb-base', // ++
],
...

這個時候就應該可以看到一些項目原有代碼的eslint報錯信息了,如果沒有的話,可以嘗試重啟編輯器的eslint服務。

eslint-plugin-prettier

本次項目不單獨引入prettier,而是使用eslint插件將prettier作為eslint規則執行。

npm install --save-dev eslint-plugin-prettier
npm install --save-dev --save-exact prettier

// .eslintrc.js
...
plugins: ['prettier'], // ++
rules: {
    'prettier/prettier': 'error', // ++
},
...

配置到此時,大概率會遇到 eslint 規則和 prettier 規則衝突的情況,比如下圖。eslint告訴我們要使用單引號,但是改為單引號以後,prettier有告訴我們要使用雙引號。

eslint報錯prettier報錯

這時候就需要另一個eslint的插件 eslint-config-prettier,這個插件的作用是禁用所有與格式相關的eslint規則,也就是說把所有格式相關的校驗都交給 prettier 處理。

npm install --save-dev eslint-config-prettier

// .eslintrc.js
...
plugins: ['prettier'],
extends: [
    'plugin:vue/vue3-recommended',
    'airbnb-base',
    'plugin:prettier/recommended', // ++
],
rules: {
    'prettier/prettier': 'error',
},
...

plugin:prettier/recommended 的配置需要注意的是,一定要放在最後。因為extends中後引入的規則會覆蓋前面的規則。

我們還可以在根目錄新建 .prettierrc.js 文件自定義 prettier 規則,保存規則後,重啟編輯器的eslint服務以更新編輯器讀取的配置文件。

// .prettierrc.js
module.exports = {
  singleQuote: true, // 使用單引號
}

到此,我們的ESLint基本配置結束了,後續需要時可以對規則進行調整。

這篇文章到這裡就結束了,但是只在開發階段約束代碼風格是一件靠自覺性的事,因為我們還需要增強ESLint的約束度。下一篇文章,我們一起研究如果在提交代碼前進行ESLint二次校驗,保證提交到Git的代碼都是符合規定的~

代碼已上傳Git,倉庫地址:https://github.com/YuanDaoDao001/vue3-vite-typescript-eslint

相關焦點

  • 在 Vue3 + Vite + TS 項目中配置 ESLint,讓 VSCode 編輯器自動修復錯誤
    我通過 create-vite 腳手架創建的 Vue3 + TS 模板項目中沒有默認集成 ESLint 代碼檢查工具。通過查閱 ESLint 官方文檔和其他相關的博客後,我對 Vue3 + TS 項目從零配置 ESLint 寫了一篇總結。
  • Vite 開發快速入門
    不過,相比Vue-cli配置來說,Vite構建的項目還是有很多的配置需要開發者自己進行處理。1.2 瀏覽器支持二、環境搭建2.1 創建項目根據Vite官網介紹,我們可以使用npm或yarn來初始化Vite項目,並且Node.js的版本需要 >= 12.0.0。
  • Vue3.0+typescript+Vite+Pinia+Element-plus搭建vue3目前最流行的項目框架!
    隨著vue3.0的越來越受歡迎,開始有許多公司和個人開始學習並使用vue3開發項目。我從接觸學習並使用vue2,到現在的vue3,工作中也一直在使用vue。vue3也發布很長時間了,目前vue3+vite+ts再結合一些優秀的UI框架,如Element plus,Ant design,Naive UI,移動端的Vant UI,成為了較為流行的前端技術之一。那麼今天就帶大家一起來搭建一個Vue3的項目吧!兼容性注意Vite 需要 Node.js 版本 >= 12.0.0。
  • 實戰教學使用 Vue3 重構 Vue2 項目(萬字好文推薦)
    本文來自於 神奇的程式設計師 的分享好文,點擊閱讀原文查看作者的掘金鍊接。
  • 把 Vue-cli 項目遷移至 Vite!
    [譯] 原文地址:https://medium.com/nerd-for-tech/from-vue-cli-to-vitejs-648d2f5e031d背景我最近將一些 Vue2 項目從vue-cli/webpack遷移到了 vite。
  • 【組件庫從0到1】Vite + Vue3 + TSX開發指南
    實踐中,我們如何刻意提升自己這方面的能力,我覺得給公司搭建一套組件庫就很好。在這個過程中大家需要解決不少工程問題,比如:這些任務對於日常和業務打交道的同學來說當然很有挑戰性,12月16日,村長特意準備了一節0元公開課《vue3+ts組件庫開發實戰》,本次課準備給小夥伴們實戰一下Tree組件的開發,深度體驗vue3+tsx開發的各種知識點。
  • 搭建 Vue CLI 4.x + Webpack5 + Vue 3.x 移動端框架
    搭建 Vue CLI 4.x + Webpack5 + Vue 3.x 移動端框架一、技術棧這是基於 Vue CLI4 實現的移動端框架,其中包含常用的配置技術選型:Vue CLI4 + Webpack5 + JavaScript(不上Ts)+ Vue 3.x + Vue Router 4.x + Vuex 4.x + Less + Vant-ui + rem適配 + eslint + husky
  • Vue2.5+ Typescript 引入全面指南
    總原則兩大原則:最小依賴引入由於我個人從Javascript到Typescript的升級,更傾向於平滑順移,因此,我對新依賴的引入整體保持克制原則,只引入了必要項,以儘量貼近原生vue寫法:以下依賴均未引入:1. vue-class-component
  • 一文徹底讀懂ESLint
    初始化如果想在現有的項目中引入eslint,我們可以在項目中進行初始化:npm i eslint --save-devnpx eslint --init在經過一系列問答後,會在項目根目錄創建一個我們熟悉的
  • 手把手教你搭建基於 Vue3 的前端組件庫
    最終決定參考 Element UI 的設計風格,主題色選擇紫色(受到 MaterialDesignInXamlToolkit 的影響),寫一套基於 Vue3 的 UI 框架庫和對應的官方網站,方便後期在項目中快速使用,也算是對 Vue3 新特性的學習和總結。先看一下 Jeremy UI 官網 效果吧!
  • Vue3+TypeScript完整項目上手教程
    一個完整的Vue3+Ts項目,支持.vue和.tsx寫法項目地址:https://github.com/vincentzyc/vue3-demo.gitTypeScript 是JS的一個超集,主要提供了類型系統和對ES6的支持,使用 TypeScript 可以增加代碼的可讀性和可維護性,在 react 和 vue 社區中也越來越多人開始使用
  • 【第1495期】 ESLint 工作原理探討
    我在一個項目中嘗試了 ESLint ,輸入 eslint init 後按照提示最終選擇了非常出名的 airbnb 的代碼風格,結果整個項目幾乎所有文件都被標紅,嘗試使用 —fix 卻無法全部修復,內心十分沮喪。現在想想,那時候的我對 ESLint 的認知是不完整的,在那時候的我看來 ESLint 就是輔助我們保持代碼風格一致的工具,airbnb 的 js 風格備受大家推崇。
  • 給 eslint 寫一個插件
    $ yarn add --dev eslinteslint 除了可以安裝插件外,還可以安裝另外兩個東西,總共有 3 種:plugin:eslint 的插件可以幫 eslint 增加規則,另外也可以通過配置文件讓程式設計師添加自己的規則,插件可以提供一份默認的推薦配置
  • 領略 Eslint 代碼檢查的四種姿勢
    二:為項目接入 Eslint 實現代碼檢查有不少朋友可能並不了解 Eslint,下面我們先對它做個簡單介紹。Eslint 是一款插件(檢查規則)化的 JavaScript 代碼檢查工具。檢查規則在項目中通常有兩種表現形式,即:配置文件中配置的規則:主要形式,通過繼承和擴展的方式聲明了大量規則項目代碼中的魔法注釋:次要形式,通常是用於作為配置文件中規則的特例生成 eslint 配置文件:
  • 十分鐘了解vite如何支持react
    丁楠:  微醫前端技術部醫療支撐組  專業標題黨,人菜癮大的刀斯林前言vite 是基於瀏覽器支持 ESM 模塊,用以解決大型應用本地開發環境打包、熱更新時間久的一套解決方案,目前已支持vue、react、Svelte、Solid等主流框架,相信不少同學已經開始使用 vite,並體驗到「飛一般」的體驗啦,下面我們來看看vite是如何支持
  • Vue3.0新特性
    reactivecomputed 和watch新的生命周期函數自定義函數--hooks函數Teleport - 瞬移組件的位置Suspense - 異步加載組件的新福音全局API的修改和優化更多的誓言性特性更好的Typescript 支持vue3.0
  • Vue 新版腳手架工具,300 行代碼輕盈新生!
    vite的Vue3項目。學會全新的官方腳手架工具 create-vue 的使用和原理2. 學會使用 VSCode 直接打開 github 項目3. 學會使用測試用例調試源碼4. 學以致用,為公司初始化項目寫腳手架工具。5. 等等2.
  • 使用Vue CLI腳手架搭建Vue基礎環境
    1.環境搭建安裝Vue CLI查看版本號使用 Vue CLI 快速創建一個項目項目創建
  • 使用ESLint+Prettier來統一前端代碼風格
    js作為一門靈活的弱類型語言,代碼風格千奇百怪,一千個人寫js就有一千種寫法。雖然js沒有官方推薦的代碼規範,不過社區有些比較熱門的代碼規範,比如standardjs、airbnb。使用ESLint配合這些規範,能夠檢測出代碼中的潛在問題,提高代碼質量,但是並不能完全統一代碼風格,因為這些代碼規範的重點並不在代碼風格上(雖然有一些限制)。下面開始安利,Prettier。
  • Vue 3全新的Web開發構建工具——Vite介紹
    在生產環境下使用Rollup打包。不過Vite項目的默認配置文件是vite.config.js,而不是vue.config.js。","build": "vite build"},"dependencies": {"vue": "^3.0.2"},"devDependencies