建立專案
建立專案。
1 | npm create vite |
建立 lib
資料夾,用來存放此套件相關的程式。
1 | cd formulate |
修改 tsconfig.json
檔。
1 | { |
安裝 TypeScript 相關套件。
1 | npm i @types/node vite-plugin-dts -D |
安裝檢查工具
安裝 ESLint 相關套件。
1 | npm i eslint @eslint/js typescript-eslint globals @types/eslint__js -D |
建立 eslint.config.js
檔。
1 | import pluginJs from '@eslint/js'; |
修改 package.json
檔。
1 | { |
執行檢查。
1 | npm run lint |
實作
進到 lib
資料夾。
1 | cd lib |
建立介面
建立 types/Rule.d.ts
檔。
1 | interface Rule { |
建立 types/LocaleMessages.d.ts
檔。
1 | interface LocaleMessages { |
建立 types/MessageRule.d.ts
檔。
1 | interface MessageRule { |
建立 types/index.ts
檔。
1 | import LocaleMessages from './LocaleMessages'; |
建立工具函式
建立 utils/isEmpty.ts
檔。
1 | const isEmpty = (value: unknown): boolean => { |
建立 utils/index.ts
檔。
1 | import isEmpty from './isEmpty.ts'; |
建立規則函式
建立 rules/required.ts
檔。
1 | import Rule from '../types/Rule'; |
建立 rules/index.ts
檔。
1 | import { Rule } from '~/types'; |
建立驗證訊息函式
建立 locales/en.ts
檔。
1 | import { LocaleMessages } from '~/types'; |
建立 locales/index.ts
檔。
1 | import { LocaleMessages } from '~/types'; |
建立 FieldValidator.ts
檔。
1 | import locales from './locales'; |
建立 FormValidator.ts
檔。
1 | import FieldValidator from './FieldValidator'; |
建立 index.ts
檔。
1 | import FieldValidator from './FieldValidator'; |
建立單元測試
安裝 Vitest 相關套件。
1 | npm i vitest jsdom -D |
建立 lib/rules/required.test.ts
檔。
1 | import { expect, test } from 'vitest'; |
建立 lib/index.test.ts
檔。
1 | import { expect, test } from 'vitest'; |
修改 package.json
檔。
1 | { |
執行測試。
1 | npm run test |
編譯
建立 vite.config.ts
檔。
1 | import vue from '@vitejs/plugin-vue'; |
建立 tsconfig.build.json
檔。
1 | { |
修改 package.json
檔。
1 | { |
執行編譯。
1 | npm run build |
檢查 dist
資料夾。
1 | tree dist |
使用
安裝 Vuetify 框架。
1 | npm i vuetify -D |
透過 ES 模組使用
修改 src/main.ts
檔。
1 | import { createApp } from 'vue'; |
修改 src/App.vue
檔。
1 | <script setup lang="ts"> |
啟動服務。
1 | npm run dev |
透過 UMD 模組使用
修改 index.html
檔。
1 |
|
啟動服務。
1 | npm run dev |
發布
登入 npm
套件管理平台。
1 | npm login |
測試發布,查看即將發布的檔案列表。
1 | npm publish --dry-run |
發布套件。
1 | npm publish --access=public |