From 8783c5b1f1d964081e27eaaa952fe8856fe3898f Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Tue, 14 Jun 2022 15:56:55 +0800 Subject: [PATCH] chore: use pnpm's workspace feature to manage base components (halo-dev/console#579) --- .github/workflows/main.yml | 4 +- .gitignore | 1 - env.d.ts | 7 + histoire.config.ts | 5 - package.json | 52 +- packages/components/.eslintrc.cjs | 3 + packages/components/env.d.ts | 9 + packages/components/histoire.config.ts | 21 + packages/components/package.json | 68 ++ packages/components/postcss.config.js | 6 + packages/components/prettier.config.js | 3 + packages/components/src/components.ts | 15 + .../src/components}/alert/Alert.story.vue | 4 +- .../src/components}/alert/Alert.vue | 4 +- .../components}/alert/__tests__/Alert.spec.ts | 0 .../components/src/components}/alert/index.ts | 0 .../src/components}/alert/interface.ts | 0 .../src/components}/button/Button.story.vue | 2 +- .../src/components}/button/Button.vue | 2 +- .../button/__tests__/Button.spec.ts | 2 +- .../__snapshots__/Button.spec.ts.snap | 0 .../src/components}/button/index.ts | 0 .../src/components}/button/interface.ts | 0 .../src/components}/card/Card.story.vue | 8 +- .../components/src/components}/card/Card.vue | 0 .../components}/card/__tests__/Card.spec.ts | 0 .../components/src/components}/card/index.ts | 0 .../components}/checkbox/CheckBox.story.vue | 2 +- .../src/components}/checkbox/CheckBox.vue | 0 .../components}/checkbox/CheckBoxGroup.vue | 0 .../checkbox/__tests__/CheckBox.spec.ts | 0 .../checkbox/__tests__/CheckBoxGroup.spec.ts | 0 .../__snapshots__/CheckBox.spec.ts.snap | 0 .../__snapshots__/CheckBoxGroup.spec.ts.snap | 0 .../src/components}/checkbox/index.ts | 0 .../src/components}/header/PageHeader.vue | 0 .../src/components}/header/index.ts | 0 .../src/components}/input/Input.story.vue | 2 +- .../src/components}/input/Input.vue | 2 +- .../components}/input/__tests__/Input.spec.ts | 0 .../__snapshots__/Input.spec.ts.snap | 0 .../components/src/components}/input/index.ts | 0 .../src/components}/input/interface.ts | 0 .../src/components}/menu/Menu.story.vue | 2 +- .../components/src/components}/menu/Menu.vue | 0 .../src/components}/menu/MenuItem.vue | 2 +- .../src/components}/menu/MenuLabel.vue | 0 .../src/components}/menu/RoutesMenu.tsx | 4 +- .../components}/menu/__tests__/Menu.spec.tsx | 0 .../menu/__tests__/MenuLabel.spec.ts | 0 .../menu/__tests__/RoutesMenu.spec.tsx | 0 .../__snapshots__/Menu.spec.tsx.snap | 0 .../__snapshots__/MenuLabel.spec.ts.snap | 0 .../components/src/components}/menu/index.ts | 0 .../src/components/menu/interface.ts | 14 + .../src/components}/modal/Modal.story.vue | 6 +- .../src/components}/modal/Modal.vue | 2 +- .../components}/modal/__tests__/Modal.spec.ts | 0 .../components/src/components}/modal/index.ts | 0 .../src/components}/radio/Radio.story.vue | 2 +- .../src/components}/radio/Radio.vue | 0 .../src/components}/radio/RadioGroup.vue | 0 .../components}/radio/__tests__/Radio.spec.ts | 0 .../radio/__tests__/RadioGroup.spec.ts | 0 .../__snapshots__/Radio.spec.ts.snap | 0 .../__snapshots__/RadioGroup.spec.ts.snap | 0 .../components/src/components}/radio/index.ts | 0 .../src/components}/select/Option.vue | 0 .../src/components}/select/Select.story.vue | 2 +- .../src/components}/select/Select.vue | 0 .../select/__tests__/Select.spec.ts | 0 .../__snapshots__/Select.spec.ts.snap | 0 .../src/components}/select/index.ts | 0 .../src/components}/select/interface.ts | 0 .../src/components}/space/Space.story.vue | 6 +- .../src/components}/space/Space.vue | 0 .../components}/space/__tests__/Space.spec.ts | 0 .../components/src/components}/space/index.ts | 0 .../src/components}/space/interface.ts | 0 .../src/components}/tabs/TabItem.vue | 0 .../src/components}/tabs/Tabbar.story.vue | 0 .../src/components}/tabs/Tabbar.vue | 0 .../src/components}/tabs/Tabs.story.vue | 0 .../components/src/components}/tabs/Tabs.vue | 2 +- .../tabs/__tests__/TabItem.spec.ts | 0 .../components}/tabs/__tests__/Tabbar.spec.ts | 0 .../components}/tabs/__tests__/Tabs.spec.ts | 0 .../components/src/components}/tabs/index.ts | 0 .../src/components}/tabs/interface.ts | 0 .../src/components}/tag/Tag.story.vue | 6 +- .../components/src/components}/tag/Tag.vue | 2 +- .../src/components}/tag/__tests__/Tag.spec.ts | 0 .../components/src/components}/tag/index.ts | 0 .../src/components}/tag/interface.ts | 0 .../components}/textarea/Textarea.story.vue | 2 +- .../src/components}/textarea/Textarea.vue | 0 .../textarea/__tests__/Textarea.spec.ts | 0 .../__snapshots__/Textarea.spec.ts.snap | 0 .../src/components}/textarea/index.ts | 0 .../src/components}/tooltip/Tooltip.story.vue | 4 +- .../src/components}/tooltip/Tooltip.vue | 0 .../src/components}/tooltip/index.ts | 0 .../components/src}/histoire.setup.ts | 0 .../components/src/icons}/icons.ts | 0 packages/components/src/index.ts | 4 + packages/components/src/styles/tailwind.css | 3 + packages/components/tailwind.config.js | 24 + packages/components/tsconfig.app.json | 12 + packages/components/tsconfig.json | 14 + packages/components/tsconfig.vite-config.json | 8 + packages/components/tsconfig.vitest.json | 9 + packages/components/vite.config.ts | 46 + pnpm-lock.yaml | 933 ++++++++++-------- pnpm-workspace.yaml | 2 + src/layouts/BasicLayout.vue | 14 +- src/layouts/SystemSettingsLayout.vue | 14 +- src/layouts/UserProfileLayout.vue | 4 +- src/layouts/__tests__/BasicLayout.spec.ts | 7 + src/main.ts | 1 + src/router/menus.config.ts | 2 +- .../contents/attachments/AttachmentList.vue | 29 +- src/views/contents/comments/CommentList.vue | 16 +- src/views/contents/posts/PostEditor.vue | 9 +- src/views/contents/posts/PostList.vue | 21 +- src/views/contents/sheets/SheetList.vue | 16 +- src/views/dashboard/Dashboard.vue | 14 +- .../dashboard/widgets/CommentStatsWidget.vue | 2 +- .../widgets/JournalPublishWidget.vue | 4 +- .../dashboard/widgets/PostStatsWidget.vue | 2 +- .../dashboard/widgets/QuickLinkWidget.vue | 4 +- .../dashboard/widgets/RecentLoginWidget.vue | 2 +- .../widgets/RecentPublishedWidget.vue | 3 +- .../dashboard/widgets/UserStatsWidget.vue | 2 +- .../dashboard/widgets/ViewsStatsWidget.vue | 2 +- src/views/interface/menus/MenuList.vue | 18 +- src/views/interface/themes/ThemeDetail.vue | 26 +- src/views/interface/themes/Visual.vue | 23 +- src/views/system/plugins/PluginDetail.vue | 16 +- src/views/system/plugins/PluginList.vue | 14 +- src/views/system/roles/RoleDetail.vue | 16 +- src/views/system/roles/RoleList.vue | 16 +- src/views/system/settings/GeneralSettings.vue | 3 +- .../system/settings/NotificationSettings.vue | 3 +- src/views/system/users/PasswordChange.vue | 3 +- .../system/users/PersonalAccessTokens.vue | 17 +- .../system/users/ProfileModification.vue | 4 +- src/views/system/users/UserDetail.vue | 3 +- src/views/system/users/UserList.vue | 18 +- tsconfig.app.json | 3 +- vite.config.ts | 16 +- vitest.config.ts | 7 + 151 files changed, 1031 insertions(+), 676 deletions(-) delete mode 100644 histoire.config.ts create mode 100644 packages/components/.eslintrc.cjs create mode 100644 packages/components/env.d.ts create mode 100644 packages/components/histoire.config.ts create mode 100644 packages/components/package.json create mode 100644 packages/components/postcss.config.js create mode 100644 packages/components/prettier.config.js create mode 100644 packages/components/src/components.ts rename {src/components/base => packages/components/src/components}/alert/Alert.story.vue (96%) rename {src/components/base => packages/components/src/components}/alert/Alert.vue (97%) rename {src/components/base => packages/components/src/components}/alert/__tests__/Alert.spec.ts (100%) rename {src/components/base => packages/components/src/components}/alert/index.ts (100%) rename {src/components/base => packages/components/src/components}/alert/interface.ts (100%) rename {src/components/base => packages/components/src/components}/button/Button.story.vue (99%) rename {src/components/base => packages/components/src/components}/button/Button.vue (98%) rename {src/components/base => packages/components/src/components}/button/__tests__/Button.spec.ts (98%) rename {src/components/base => packages/components/src/components}/button/__tests__/__snapshots__/Button.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/button/index.ts (100%) rename {src/components/base => packages/components/src/components}/button/interface.ts (100%) rename {src/components/base => packages/components/src/components}/card/Card.story.vue (99%) rename {src/components/base => packages/components/src/components}/card/Card.vue (100%) rename {src/components/base => packages/components/src/components}/card/__tests__/Card.spec.ts (100%) rename {src/components/base => packages/components/src/components}/card/index.ts (100%) rename {src/components/base => packages/components/src/components}/checkbox/CheckBox.story.vue (90%) rename {src/components/base => packages/components/src/components}/checkbox/CheckBox.vue (100%) rename {src/components/base => packages/components/src/components}/checkbox/CheckBoxGroup.vue (100%) rename {src/components/base => packages/components/src/components}/checkbox/__tests__/CheckBox.spec.ts (100%) rename {src/components/base => packages/components/src/components}/checkbox/__tests__/CheckBoxGroup.spec.ts (100%) rename {src/components/base => packages/components/src/components}/checkbox/__tests__/__snapshots__/CheckBox.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/checkbox/__tests__/__snapshots__/CheckBoxGroup.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/checkbox/index.ts (100%) rename {src/components/base => packages/components/src/components}/header/PageHeader.vue (100%) rename {src/components/base => packages/components/src/components}/header/index.ts (100%) rename {src/components/base => packages/components/src/components}/input/Input.story.vue (92%) rename {src/components/base => packages/components/src/components}/input/Input.vue (97%) rename {src/components/base => packages/components/src/components}/input/__tests__/Input.spec.ts (100%) rename {src/components/base => packages/components/src/components}/input/__tests__/__snapshots__/Input.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/input/index.ts (100%) rename {src/components/base => packages/components/src/components}/input/interface.ts (100%) rename {src/components/base => packages/components/src/components}/menu/Menu.story.vue (97%) rename {src/components/base => packages/components/src/components}/menu/Menu.vue (100%) rename {src/components/base => packages/components/src/components}/menu/MenuItem.vue (97%) rename {src/components/base => packages/components/src/components}/menu/MenuLabel.vue (100%) rename {src/components/base => packages/components/src/components}/menu/RoutesMenu.tsx (93%) rename {src/components/base => packages/components/src/components}/menu/__tests__/Menu.spec.tsx (100%) rename {src/components/base => packages/components/src/components}/menu/__tests__/MenuLabel.spec.ts (100%) rename {src/components/base => packages/components/src/components}/menu/__tests__/RoutesMenu.spec.tsx (100%) rename {src/components/base => packages/components/src/components}/menu/__tests__/__snapshots__/Menu.spec.tsx.snap (100%) rename {src/components/base => packages/components/src/components}/menu/__tests__/__snapshots__/MenuLabel.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/menu/index.ts (100%) create mode 100644 packages/components/src/components/menu/interface.ts rename {src/components/base => packages/components/src/components}/modal/Modal.story.vue (89%) rename {src/components/base => packages/components/src/components}/modal/Modal.vue (98%) rename {src/components/base => packages/components/src/components}/modal/__tests__/Modal.spec.ts (100%) rename {src/components/base => packages/components/src/components}/modal/index.ts (100%) rename {src/components/base => packages/components/src/components}/radio/Radio.story.vue (90%) rename {src/components/base => packages/components/src/components}/radio/Radio.vue (100%) rename {src/components/base => packages/components/src/components}/radio/RadioGroup.vue (100%) rename {src/components/base => packages/components/src/components}/radio/__tests__/Radio.spec.ts (100%) rename {src/components/base => packages/components/src/components}/radio/__tests__/RadioGroup.spec.ts (100%) rename {src/components/base => packages/components/src/components}/radio/__tests__/__snapshots__/Radio.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/radio/__tests__/__snapshots__/RadioGroup.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/radio/index.ts (100%) rename {src/components/base => packages/components/src/components}/select/Option.vue (100%) rename {src/components/base => packages/components/src/components}/select/Select.story.vue (93%) rename {src/components/base => packages/components/src/components}/select/Select.vue (100%) rename {src/components/base => packages/components/src/components}/select/__tests__/Select.spec.ts (100%) rename {src/components/base => packages/components/src/components}/select/__tests__/__snapshots__/Select.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/select/index.ts (100%) rename {src/components/base => packages/components/src/components}/select/interface.ts (100%) rename {src/components/base => packages/components/src/components}/space/Space.story.vue (88%) rename {src/components/base => packages/components/src/components}/space/Space.vue (100%) rename {src/components/base => packages/components/src/components}/space/__tests__/Space.spec.ts (100%) rename {src/components/base => packages/components/src/components}/space/index.ts (100%) rename {src/components/base => packages/components/src/components}/space/interface.ts (100%) rename {src/components/base => packages/components/src/components}/tabs/TabItem.vue (100%) rename {src/components/base => packages/components/src/components}/tabs/Tabbar.story.vue (100%) rename {src/components/base => packages/components/src/components}/tabs/Tabbar.vue (100%) rename {src/components/base => packages/components/src/components}/tabs/Tabs.story.vue (100%) rename {src/components/base => packages/components/src/components}/tabs/Tabs.vue (95%) rename {src/components/base => packages/components/src/components}/tabs/__tests__/TabItem.spec.ts (100%) rename {src/components/base => packages/components/src/components}/tabs/__tests__/Tabbar.spec.ts (100%) rename {src/components/base => packages/components/src/components}/tabs/__tests__/Tabs.spec.ts (100%) rename {src/components/base => packages/components/src/components}/tabs/index.ts (100%) rename {src/components/base => packages/components/src/components}/tabs/interface.ts (100%) rename {src/components/base => packages/components/src/components}/tag/Tag.story.vue (88%) rename {src/components/base => packages/components/src/components}/tag/Tag.vue (96%) rename {src/components/base => packages/components/src/components}/tag/__tests__/Tag.spec.ts (100%) rename {src/components/base => packages/components/src/components}/tag/index.ts (100%) rename {src/components/base => packages/components/src/components}/tag/interface.ts (100%) rename {src/components/base => packages/components/src/components}/textarea/Textarea.story.vue (93%) rename {src/components/base => packages/components/src/components}/textarea/Textarea.vue (100%) rename {src/components/base => packages/components/src/components}/textarea/__tests__/Textarea.spec.ts (100%) rename {src/components/base => packages/components/src/components}/textarea/__tests__/__snapshots__/Textarea.spec.ts.snap (100%) rename {src/components/base => packages/components/src/components}/textarea/index.ts (100%) rename {src/components/base => packages/components/src/components}/tooltip/Tooltip.story.vue (75%) rename {src/components/base => packages/components/src/components}/tooltip/Tooltip.vue (100%) rename {src/components/base => packages/components/src/components}/tooltip/index.ts (100%) rename {src => packages/components/src}/histoire.setup.ts (100%) rename {src/core => packages/components/src/icons}/icons.ts (100%) create mode 100644 packages/components/src/index.ts create mode 100644 packages/components/src/styles/tailwind.css create mode 100644 packages/components/tailwind.config.js create mode 100644 packages/components/tsconfig.app.json create mode 100644 packages/components/tsconfig.json create mode 100644 packages/components/tsconfig.vite-config.json create mode 100644 packages/components/tsconfig.vitest.json create mode 100644 packages/components/vite.config.ts create mode 100644 pnpm-workspace.yaml create mode 100644 src/layouts/__tests__/BasicLayout.spec.ts create mode 100644 vitest.config.ts diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b71a42393..075ccb5c6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v2.0.1 with: - version: 6.15.1 + version: 7.1.6 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 @@ -38,6 +38,8 @@ jobs: - name: Install dependencies run: pnpm install + - name: Build packages + run: pnpm build:packages - name: Run code lint check run: pnpm lint - name: Run unit test diff --git a/.gitignore b/.gitignore index 9744124eb..f828697d5 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ node_modules .DS_Store dist dist-ssr -dist-typings histoire-dist coverage *.local diff --git a/env.d.ts b/env.d.ts index 11f02fe2a..9f8f1e2c2 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1 +1,8 @@ /// + +declare module "*.vue" { + import type { DefineComponent } from "vue"; + // eslint-disable-next-line + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/histoire.config.ts b/histoire.config.ts deleted file mode 100644 index 27bbb71f8..000000000 --- a/histoire.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { defineConfig } from "histoire"; - -export default defineConfig({ - setupFile: "/src/histoire.setup.ts", -}); diff --git a/package.json b/package.json index 487709a10..539ea4e1e 100644 --- a/package.json +++ b/package.json @@ -5,71 +5,73 @@ "prepare": "husky install", "dev": "vite --host", "build": "vue-tsc --noEmit && vite build", + "build:packages": "pnpm --filter './packages/**' build", "preview": "vite preview --port 5050", - "test:unit": "vitest --environment jsdom --run", + "test:unit": "vitest --environment jsdom --run && pnpm run test:unit:packages", "test:unit:watch": "vitest --environment jsdom --watch", "test:unit:ui": "vitest --environment jsdom --watch --ui", "test:unit:coverage": "vitest run --environment jsdom --coverage", "test:e2e": "start-server-and-test preview http://127.0.0.1:5050/ 'cypress open'", "test:e2e:ci": "start-server-and-test preview http://127.0.0.1:5050/ 'cypress run'", - "typecheck": "vue-tsc --noEmit -p tsconfig.app.json --composite false", - "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore", - "story:dev": "histoire dev --port 4000", - "story:build": "histoire build", - "prettier": "prettier --write './src/**/*.{vue,js,jsx,ts,tsx,css,scss,json,yml,yaml,html}'" + "typecheck": "vue-tsc --noEmit -p tsconfig.app.json --composite false && pnpm run typecheck:packages", + "lint": "eslint ./src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore && pnpm run lint:packages", + "prettier": "prettier --write './src/**/*.{vue,js,jsx,ts,tsx,css,scss,json,yml,yaml,html}' && pnpm run prettier:packages", + "typecheck:packages": "pnpm --filter './packages/**' run typecheck", + "lint:packages": "pnpm --filter './packages/**' lint", + "prettier:packages": "pnpm --filter './packages/**' prettier", + "test:unit:packages": "pnpm --filter './packages/**' run test:unit" }, + "workspaces": [ + "packages/*" + ], "dependencies": { - "@halo-dev/admin-api": "^1.0.0", - "@vueuse/core": "^8.5.0", - "filepond": "^4.30.3", + "@halo-dev/admin-api": "^1.1.0", + "@vueuse/core": "^8.6.0", + "filepond": "^4.30.4", "filepond-plugin-image-preview": "^4.6.11", "floating-vue": "2.0.0-beta.16", "lodash.clonedeep": "^4.5.0", "pinia": "^2.0.14", - "tippy.js": "^6.3.7", - "vue": "^3.2.36", + "vue": "^3.2.37", "vue-filepond": "^7.0.3", "vue-grid-layout": "3.0.0-beta1", - "vue-router": "^4.0.15" + "vue-router": "^4.0.16", + "@halo-dev/components": "workspace:*" }, "devDependencies": { - "@iconify-json/ri": "^1.1.2", "@rushstack/eslint-patch": "^1.1.3", "@tailwindcss/aspect-ratio": "^0.4.0", "@types/jsdom": "^16.2.14", "@types/lodash.clonedeep": "4.5.0", - "@types/node": "^17.0.35", + "@types/node": "^17.0.42", "@vitejs/plugin-vue": "^2.3.3", "@vitejs/plugin-vue-jsx": "^1.3.10", - "@vitest/ui": "^0.12.9", + "@vitest/ui": "^0.12.10", "@vue/eslint-config-prettier": "^7.0.0", "@vue/eslint-config-typescript": "^10.0.0", "@vue/test-utils": "^2.0.0", "@vue/tsconfig": "^0.1.3", "autoprefixer": "^10.4.7", "c8": "^7.11.3", - "cypress": "^9.6.1", - "eslint": "^8.16.0", + "cypress": "^9.7.0", + "eslint": "^8.17.0", "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-vue": "^8.7.1", - "histoire": "^0.4.6", "husky": "^8.0.1", "jsdom": "^19.0.0", "postcss": "^8.4.14", "prettier": "^2.6.2", "prettier-plugin-tailwindcss": "^0.1.11", - "sass": "^1.52.1", + "sass": "^1.52.3", "start-server-and-test": "^1.14.0", - "tailwindcss": "^3.0.24", + "tailwindcss": "^3.1.2", "tailwindcss-safe-area": "^0.2.2", "tailwindcss-themeable": "^1.3.0", "typescript": "~4.6.4", - "unplugin-icons": "^0.14.3", - "vite": "^2.9.9", + "vite": "^2.9.12", "vite-compression-plugin": "^0.0.3", - "vite-plugin-dts": "^1.1.1", "vite-plugin-pwa": "^0.12.0", - "vitest": "^0.12.9", - "vue-tsc": "^0.34.16" + "vitest": "^0.12.10", + "vue-tsc": "^0.34.17" } } diff --git a/packages/components/.eslintrc.cjs b/packages/components/.eslintrc.cjs new file mode 100644 index 000000000..feeabc42c --- /dev/null +++ b/packages/components/.eslintrc.cjs @@ -0,0 +1,3 @@ +module.exports = { + extends: ["../../.eslintrc.cjs"], +}; diff --git a/packages/components/env.d.ts b/packages/components/env.d.ts new file mode 100644 index 000000000..c7222cf4c --- /dev/null +++ b/packages/components/env.d.ts @@ -0,0 +1,9 @@ +/// +/// + +declare module "*.vue" { + import type { DefineComponent } from "vue"; + // eslint-disable-next-line + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/packages/components/histoire.config.ts b/packages/components/histoire.config.ts new file mode 100644 index 000000000..35d0cec25 --- /dev/null +++ b/packages/components/histoire.config.ts @@ -0,0 +1,21 @@ +import { defineConfig } from "histoire"; +import type { UserConfig } from "vite"; + +export default defineConfig({ + setupFile: "./src/histoire.setup.ts", + + vite: { + plugins: [ + { + name: "disable-lib-plugin", + config(config: UserConfig) { + if (!config || !config.build || !config.build.rollupOptions) { + return; + } + config.build.lib = false; + config.build.rollupOptions.external = []; + }, + }, + ], + }, +}); diff --git a/packages/components/package.json b/packages/components/package.json new file mode 100644 index 000000000..74f61a3f2 --- /dev/null +++ b/packages/components/package.json @@ -0,0 +1,68 @@ +{ + "name": "@halo-dev/components", + "version": "0.0.0", + "description": "", + "files": [ + "dist" + ], + "main": "./dist/halo-components.umd.js", + "module": "./dist/halo-components.es.js", + "unpkg": "./dist/halo-components.iife.js", + "jsdelivr": "./dist/halo-components.iife.js", + "types": "./dist/typings/index.d.ts", + "scripts": { + "dev": "vite build --watch", + "build": "vite build", + "test:unit": "vitest --environment jsdom --run", + "test:unit:watch": "vitest --environment jsdom --watch", + "test:unit:ui": "vitest --environment jsdom --watch --ui", + "test:unit:coverage": "vitest run --environment jsdom --coverage", + "typecheck": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "story:dev": "histoire dev --port 4000", + "story:build": "histoire build", + "lint": "eslint ./src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts", + "prettier": "prettier --write './src/**/*.{vue,js,jsx,ts,tsx,css,scss,json,yml,yaml,html}'", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "halo", + "halo-components", + "halo-dev", + "@halo-dev/components" + ], + "author": { + "name": "@halo-dev", + "url": "https://github.com/halo-dev" + }, + "repository": { + "type": "git", + "url": "https://github.com/halo-dev/halo-admin.git", + "directory": "packages/components" + }, + "bugs": { + "url": "https://github.com/halo-dev/halo/issues" + }, + "homepage": "https://github.com/halo-dev/halo-admin/tree/next/packages/components#readme", + "license": "MIT", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "devDependencies": { + "@iconify-json/ri": "^1.1.2", + "@rollup/plugin-typescript": "^8.3.3", + "histoire": "^0.7.6", + "unplugin-icons": "^0.14.3", + "vite-plugin-dts": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.37", + "vue-router": "^4.0.16" + }, + "exports": { + ".": { + "import": "./dist/halo-components.es.js", + "require": "./dist/halo-components.umd.js" + }, + "./dist/style.css": "./dist/style.css" + } +} diff --git a/packages/components/postcss.config.js b/packages/components/postcss.config.js new file mode 100644 index 000000000..12a703d90 --- /dev/null +++ b/packages/components/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/packages/components/prettier.config.js b/packages/components/prettier.config.js new file mode 100644 index 000000000..38409a265 --- /dev/null +++ b/packages/components/prettier.config.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: ["../../prettier.config.js"], +}; diff --git a/packages/components/src/components.ts b/packages/components/src/components.ts new file mode 100644 index 000000000..2ea4cc78f --- /dev/null +++ b/packages/components/src/components.ts @@ -0,0 +1,15 @@ +export * from "./components/alert"; +export * from "./components/button"; +export * from "./components/card"; +export * from "./components/checkbox"; +export * from "./components/header"; +export * from "./components/input"; +export * from "./components/menu"; +export * from "./components/modal"; +export * from "./components/radio"; +export * from "./components/select"; +export * from "./components/space"; +export * from "./components/tabs"; +export * from "./components/tag"; +export * from "./components/textarea"; +export * from "./components/tooltip"; diff --git a/src/components/base/alert/Alert.story.vue b/packages/components/src/components/alert/Alert.story.vue similarity index 96% rename from src/components/base/alert/Alert.story.vue rename to packages/components/src/components/alert/Alert.story.vue index f4441989c..2158d471e 100644 --- a/src/components/base/alert/Alert.story.vue +++ b/packages/components/src/components/alert/Alert.story.vue @@ -1,7 +1,7 @@ diff --git a/src/components/base/menu/Menu.vue b/packages/components/src/components/menu/Menu.vue similarity index 100% rename from src/components/base/menu/Menu.vue rename to packages/components/src/components/menu/Menu.vue diff --git a/src/components/base/menu/MenuItem.vue b/packages/components/src/components/menu/MenuItem.vue similarity index 97% rename from src/components/base/menu/MenuItem.vue rename to packages/components/src/components/menu/MenuItem.vue index 59d581fb1..1e92fb0c7 100644 --- a/src/components/base/menu/MenuItem.vue +++ b/packages/components/src/components/menu/MenuItem.vue @@ -1,5 +1,5 @@ diff --git a/src/components/base/tag/Tag.vue b/packages/components/src/components/tag/Tag.vue similarity index 96% rename from src/components/base/tag/Tag.vue rename to packages/components/src/components/tag/Tag.vue index 8d45e48d5..92256cc08 100644 --- a/src/components/base/tag/Tag.vue +++ b/packages/components/src/components/tag/Tag.vue @@ -1,7 +1,7 @@