上一篇已經把vite外掛的基礎結構搭建起來了,這一次就來聊聊繼續完善開發環境。
完善開發環境
生成d.ts檔案
先來修改一下lib/index.ts
這個檔案
export interface userOptions {
name: string;
age: number;
base?: string;
}
export function handleOptions(options?: userOptions): string {
return `${options.name || "小明"}今年${options.age},主頁${
options?.base || "/"
}`;
}
在執行 yarn build
,不出所料是打包成功了,然後新建一個檔案a.js匯入dist/index.js這個檔案,也能夠正常使用,但是又發現一個問題,貌似沒有隻能提示,完全不知道options可以傳入哪些引數,這就有點不滿意了,對標一下@vitejs/plugin-vue
是有提示的。
原因尼也能簡單,就是tsup打包的時候沒有生成.d.ts的類檔案。翻了下文件tsup自帶了生成類檔案的功能。有個引數是--dts
所以來改造一下命令
{
"build": "tsup ./lib/index.ts --dts"
}
執行一下發下會多一個index.d.ts的檔案,測試一下,隨便新建一個js檔案
發現也有提示了,完美???
建立一個git倉庫
到這裡也配置了有點東西了,後面的東西還需要git倉庫的支援,所以先搞一個git倉庫把程式碼提上去。
好像還沒有配置.gitignore,把example當中的.gitignore移動到根目錄來
node_modules
.DS_Store
dist
dist-ssr
*.local
配置開發規範
雖然啥都還沒有,但是逼格不能少,萬一用的人多了,給你提個pr什麼的,沒有一個嚴格的規範就很難受。並且只靠文件去規範是不現實的,所以必須在提交前程式碼去驗證,不合格直接不讓提交。
commit規範
先從簡單的commit規範開始吧,細緻瞭解可以瞅瞅這篇文章如何規範你的Git commit?
這裡就要用到commitlint這個外掛了,不囉嗦直接安裝沒啥難度
yarn add @commitlint/config-conventional @commitlint/cli husky -D -W
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
注意這個是安裝在外層的monorepo
這個庫裡面,因為無論改任何檔案,只要提交我們都要校驗commit msg
在scipts中在新增一條命令
{
"prepare": "husky install"
}
yarn prepare
# 把commitlint新增到git鉤子中
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'
最後提交一下 git commit -m 'xxx' 只要不按照規範,就會丟擲異常
列舉一下外掛的作用
- commitlint 檢測commit msg是否規範
- husky git hooks,有了才能完善後面的,提交之前自動格式化程式碼,檢測程式碼是否規範
又完成了一個小目標,完美 ???
程式碼規範
程式碼規範有兩部分,一個是eslint檢查程式碼異常,另外一個是prettier程式碼格式的檢查。
在配置之前先來避個坑,現在專案的packages有2個,最開始我是把eslint和prettier分別寫在
example
,vue-docs
裡面的,想的是一個vue的檔案多,一個純ts,這樣就可以不同的專案用不同的方案。完了之後發現我就是個憨憨,寫在最外層,做程式碼檢查的時候直接就一起做了,並且是可以支援:針對不同的檔案型別執行不同的檢查方案。
先來配置eslint
yarn add -D typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint -W
配置.eslintrc
{
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"rules": {},
"extends": [
"plugin:@typescript-eslint/recommended"
]
}
因為核心程式碼是ts所以要用到s的外掛這兩部很簡單在@typescript-eslint/eslint-plugin
的官網上抄下來就行了。@typescript-eslint/eslint-plugin
來驗證一下,在vue-docs/lib/index.ts,寫點錯誤程式碼
編輯器報錯了,不要激動,還沒完。這裡有個坑,如果你的編輯器不是用的專案中的.eslintrc配置,這個測試是沒用的,所以還需要執行下一步
npx eslint packages/vue-docs/lib
看下是否報錯
如果看到的是這樣的才能代表成功,又一個功能點完成了???
配置prettier
這個也很簡單從官網抄就行了eslint-plugin-prettier
yarn add eslint-plugin-prettier prettier -D -W
修改.eslintrc,新增如下
{
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error"
}
}
在來安裝一個推薦配置
yarn add eslint-config-prettier -D -W
完整的.eslintrc配置
{
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint",
"prettier"
],
"rules": {
"prettier/prettier": "error"
},
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
]
}
最後來測一測,這個測試就很簡單了隨便用記事本改一下格式,然後執行
npx prettier --write packages/vue-docs/lib
格式是不是有回到熟悉的樣子了。
最後把2條命令加入到scripts中
{
"lint": "eslint packages/vue-docs/lib",
"fix": "prettier --write packages/vue-docs/lib "
}
到這裡尼,基本的程式碼規範就有了。那麼如何把程式碼規範和git結合到一起尼,下次再見。
最後再來推廣一波
- 倉庫連結: vite-plugin-vue-docs
- 線上體驗: 解析.vue 檔案,自動生成文件