使用WebStorm開發(fā)Vue3項(xiàng)目及其他問題詳解
記錄一下使用WebStorm開發(fā)Vu3項(xiàng)目時(shí)的配置
現(xiàn)在WebStorm可以個(gè)人免費(fèi)使用啦!??
基本配置
打包工具:Vite
前端框架:ElementPlus
開發(fā)語(yǔ)言:Vue3、TypeScript、Sass
代碼檢查:ESLint、Prettier
IDE:WebStorm 2024.2
首先說(shuō)一下版本兼容問題,ElementPlus>=2.8.5
需要Sass>=1.79.0
,但是升級(jí)了Sass后,會(huì)導(dǎo)致Element提示很多警告,猜測(cè)原因是因?yàn)镾ass在后續(xù)版本修改了一些語(yǔ)法規(guī)則,而Element沒有跟進(jìn)修改。這些警告雖然不影響代碼運(yùn)行,但是看著糟心,目前只能等待官方后續(xù)更新了。
搭建Vue3項(xiàng)目
通過Vite搭建Vue3項(xiàng)目
npm create vite@latest my-vue-app -- --template vue-ts
my-vue-app
為項(xiàng)目文件夾名稱vue-ts
表示使用包含typescript的vue項(xiàng)目模板搭建
安裝后的目錄結(jié)構(gòu)
├─ index.html ├─ package.json ├─ tsconfig.json #typescript配置文件 ├─ tsconfig.app.json #typescript配置文件,本項(xiàng)目的ts配置,自動(dòng)引用到tsconfig.json中 ├─ tsconfig.node.json #typescript配置文件,為vite服務(wù)的ts配置,自動(dòng)引用到tsconfig.json中 ├─ vite.config.ts #vite配置文件 ├─ src │ ├─ assets #靜態(tài)文件 │ ├─ components #組件 │ ├─ App.vue │ ├─ main.ts
安裝框架和其他工具包
修改項(xiàng)目根目錄下的package.json
文件,添加前端框架和其他依賴包
{ "name": "my-vue-app", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.12", "element-plus": "^2.8.1" }, "devDependencies": { "@vitejs/plugin-vue": "^5.1.4", "typescript": "~5.6.2", "vite": "^5.4.10", "vue-tsc": "^2.1.8", "sass": "^1.77.0", "unplugin-auto-import": "^0.18.3", "unplugin-vue-components": "^0.27.4", "@eslint/js": "^9.13.0", "@rushstack/eslint-patch": "^1.10.4", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-promise": "^6.6.0", "eslint-plugin-vue": "^9.29.0", "typescript-eslint": "^8.10.0", "@vue/eslint-config-prettier": "^10.0.0", "@vue/eslint-config-typescript": "^14.1.1" } }
unplugin-auto-import
和unplugin-vue-components
為自動(dòng)導(dǎo)入工具,可在編寫代碼時(shí),可以無(wú)需import ref from 'vue'
而直接使用ref
,工具配置后會(huì)自動(dòng)導(dǎo)入組件。- 名稱中包含eslint的依賴包為ESLint規(guī)則,后續(xù)在
eslint.config.js
中配置。 - 正如一開始所說(shuō),由于ElementPlus和Sass版本過高會(huì)出現(xiàn)警告的問題,所以目前安裝的低版本,等待官方修復(fù)問題后,再升級(jí)版本。
運(yùn)行安裝依賴
npm install
如果安裝時(shí)間過久,或者提示網(wǎng)絡(luò)超時(shí),可以切換npm源后再重新安裝
# 切換為淘寶鏡像 npm config set registry https://registry.npmmirror.com/
配置vite:vite.config.ts
import {defineConfig, loadEnv} from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite'; import {ElementPlusResolver} from "unplugin-vue-components/resolvers"; import Components from 'unplugin-vue-components/vite'; import path from 'path'; export default defineConfig(({ mode }) => { // 環(huán)境變量 const env = loadEnv(mode, process.cwd(), ''); return { plugins: [ vue(), AutoImport({ // 自動(dòng)導(dǎo)入的組件 imports: ['vue', 'vue-router'], // 解析器:當(dāng)前使用了ElementPlus的解析器 resolvers: [ElementPlusResolver()], // 開啟eslint eslintrc: { enabled: true }, }), Components({ // 解析器:當(dāng)前使用了ElementPlus的解析器 resolvers: [ElementPlusResolver({ importStyle: 'sass' })], // 以下文件夾中的組件自動(dòng)導(dǎo)入 dirs: ['src/components'], }), ], resolve: { alias: { // 設(shè)置路徑別名 '@': path.resolve(__dirname, './src'), }, }, server: { // 網(wǎng)絡(luò)請(qǐng)求代理 proxy: { '/t/': { target: env.VITE_SERVER, changeOrigin: true, }, }, }, }; });
運(yùn)行項(xiàng)目
npm run dev
運(yùn)行后會(huì)自動(dòng)生成文件auto-imports.d.ts
和components.d.ts
,又因?yàn)锳utoImport開啟了eslintrc,還會(huì)生成文件.eslintrc-auto-import.json
配置eslint:eslint.config.ts
目前使用的eslint9版本,配置文件與之前版本的寫法可能不一致。
注意:WebStorm2024版本才支持eslint9版本的配置文件。
創(chuàng)建eslint配置文件eslint.config.js
import pluginJs from '@eslint/js'; import tseslint from 'typescript-eslint'; import pluginVue from 'eslint-plugin-vue'; import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; import autoImport from './.eslintrc-auto-import.json' assert { type: 'json' }; export default [ { files: ['**/*.{js,mjs,cjs,ts,vue}'] }, // 導(dǎo)入auto-import插件配置(目前暫不支持eslint9) { files: ['**/*.{js,mjs,cjs,ts,vue}'], languageOptions: autoImport }, pluginJs.configs.recommended, ...tseslint.configs.recommended, ...pluginVue.configs['flat/essential'], { files: ['**/*.vue'], languageOptions: { parserOptions: { parser: tseslint.parser } } }, // 自定義規(guī)則 { rules: { // 使用any類型時(shí)提示警告 '@typescript-eslint/no-explicit-any': 'warn', }, }, eslintPluginPrettierRecommended, ];
- 由于目前unplugin-auto-import并不支持eslint9,所以需要導(dǎo)入
.eslintrc-auto-import.json
文件消除錯(cuò)誤提示。 - 一般來(lái)說(shuō)eslint-plugin-prettier的規(guī)則要放在最后,保證它的規(guī)則不會(huì)被覆蓋。
- 如果要增加更多規(guī)則,請(qǐng)查看eslint配置文檔。
修改ts配置:tsconfig.app.json
修改ts配置,添加上一步自動(dòng)生成的.d.ts文件,添加后就不會(huì)提示Vue的導(dǎo)入錯(cuò)誤了。
# 在include中添加文件名 { "compilerOptions": {...} "include": [..., "auto-imports.d.ts", "components.d.ts"] }
修改WebStorm設(shè)置
- 選擇自動(dòng)ESLint配置,編輯器會(huì)自動(dòng)尋找根目錄下的.eslint.config.js文件。
- 勾選eslint --fix會(huì)在保存文件時(shí)自動(dòng)格式化代碼。
修改后重啟一下編輯器,或者重啟語(yǔ)言服務(wù)中的兩個(gè)服務(wù)。
完成后打開App.vue文件,刪除import HelloWorld from './components/HelloWorld.vue'
,并沒有HelloWorld組件未導(dǎo)入的錯(cuò)誤提示,則說(shuō)明配置生效了。
配置prettier:.prettierrc.json
默認(rèn)prettier的規(guī)則可能不適合個(gè)人習(xí)慣,可以通過添加.prettierrc.json
配置文件進(jìn)行修改規(guī)則
{ "semi": true, // 句尾增加分號(hào) "tabWidth": 4, //使用4個(gè)空格縮進(jìn) "singleQuote": true, // 使用單引號(hào) "printWidth": 200, // 超過200字符換行 "arrowParens": "avoid", // 單箭頭函數(shù)不加括號(hào) "bracketSameLine": true // 對(duì)象前后增加空格 }
還有很多規(guī)則,可以查看prettier文檔。
環(huán)境變量env
創(chuàng)建文件.env
、.env.development
、.env.production
分別對(duì)應(yīng)默認(rèn)配置、開發(fā)環(huán)境配置、生成環(huán)境配置
// .env.development VITE_SERVER = http://dev.xxx.com // .env.production VITE_SERVER = http://pro.xxx.com
修改打包命令
// package.json { ... "scripts":{ ... "build": "vite build --mode production", "build-dev": "vite build --mode development", ... } ... }
更多有關(guān)環(huán)境變量的配置和使用,請(qǐng)查看vite文檔。
其他問題
- 為什么用了ESLint還要用Prettier,兩者分別有什么作用?
Prettier用于格式化代碼,確??s進(jìn)、分號(hào)、引號(hào)、換行等代碼格式一致;ESLint則用于代碼語(yǔ)法檢測(cè),提示錯(cuò)誤。 - 換行符的問題
Windows系統(tǒng)使用的換行符為CRLF(/r/n),而Linux和MacOS使用的是LF(/n),為了統(tǒng)一,可在.prettierrc.json
中添加"endOfLine": "lf"
,同時(shí)需要修改git配置git config --global core.autocrlf input
,表示在提交時(shí)將CRLF轉(zhuǎn)換為L(zhǎng)F,在檢出時(shí)不進(jìn)行轉(zhuǎn)換。默認(rèn)git會(huì)在檢出時(shí)自動(dòng)轉(zhuǎn)換為CRLF,此時(shí)就會(huì)與當(dāng)前的代碼格式不一致,可能會(huì)導(dǎo)致沖突。
總結(jié)
到此這篇關(guān)于使用WebStorm開發(fā)Vue3項(xiàng)目及其他問題的文章就介紹到這了,更多相關(guān)WebStorm開發(fā)Vue3項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue基于element-china-area-data插件實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)
省市區(qū)聯(lián)動(dòng)在日常開發(fā)中用的非常多,本文就介紹一下vue基于element-china-area-data插件實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04Vue中img的src是動(dòng)態(tài)渲染時(shí)不顯示的解決
今天小編就為大家分享一篇Vue中img的src是動(dòng)態(tài)渲染時(shí)不顯示的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-11-11vue中props賦值給data出現(xiàn)的問題及解決
這篇文章主要介紹了vue中props賦值給data出現(xiàn)的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue.js整合vux中的上拉加載下拉刷新實(shí)例教程
這篇文章主要給大家介紹了關(guān)于vue.js整合vux中上拉加載下拉刷新的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01基于Vue.js實(shí)現(xiàn)一個(gè)完整的登錄功能
在現(xiàn)代Web應(yīng)用中,用戶登錄功能是一個(gè)核心模塊,它不僅涉及到用戶身份驗(yàn)證,還需要處理表單驗(yàn)證、狀態(tài)管理、接口調(diào)用等多個(gè)環(huán)節(jié),本文將基于一個(gè)Vue.js項(xiàng)目中的登錄功能實(shí)現(xiàn),深入解析其背后的技術(shù)細(xì)節(jié),幫助開發(fā)者更好地理解和實(shí)現(xiàn)類似功能,需要的朋友可以參考下2025-02-02