Ver código fonte

feat(组件): 增加changeset,vitest等基础组件

gemercheung 2 anos atrás
pai
commit
ca471c546c

+ 8 - 0
.changeset/README.md

@@ -0,0 +1,8 @@
+# Changesets
+
+Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
+with multi-package repos, or single-package repos to help you version and publish your code. You can
+find the full documentation for it [in our repository](https://github.com/changesets/changesets)
+
+We have a quick list of common questions to get you started engaging with this project in
+[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)

+ 11 - 0
.changeset/config.json

@@ -0,0 +1,11 @@
+{
+  "$schema": "https://unpkg.com/@changesets/config@2.1.1/schema.json",
+  "changelog": "@changesets/cli/changelog",
+  "commit": false,
+  "fixed": [],
+  "linked": [],
+  "access": "restricted",
+  "baseBranch": "main",
+  "updateInternalDependencies": "patch",
+  "ignore": []
+}

+ 4 - 0
.husky/commit-msg

@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+npx --no-install commitlint --edit $1

+ 1 - 0
RFC.md

@@ -0,0 +1 @@
+# RFC

commitlint-config.js → commitlint.config.js


+ 20 - 2
package.json

@@ -12,11 +12,19 @@
     "build": "pnpm run -r build",
     "test": "pnpm run -r test",
     "lint": "eslint --ext js,ts . --fix",
-    "commit": "git cz"
+    "commit": "git cz",
+    "preinstall": "npx only-allow pnpm",
+    "postinstall": "husky install",
+    "changeset": "changeset",
+    "version-packages":"changeset version"
   },
   "devDependencies": {
+    "@changesets/cli": "^2.24.4",
     "@commitlint/cli": "^17.1.2",
     "@nighttrax/eslint-config-tsx": "~10.0.0",
+    "@vitejs/plugin-vue": "^3.1.0",
+    "@vitejs/plugin-vue-jsx": "^2.0.1",
+    "@vue/test-utils": "^2.0.2",
     "commitizen": "^4.2.5",
     "commitlint-config-cz": "^0.13.3",
     "cz-customizable": "^7.0.0",
@@ -30,7 +38,17 @@
     "eslint-plugin-vue": "^8.7.1",
     "husky": "^8.0.1",
     "jest": "^29.0.3",
-    "typescript": "~4.7.4"
+    "lint-staged": "^13.0.3",
+    "resize-observer-polyfill": "^1.5.1",
+    "typescript": "~4.7.4",
+    "unplugin-vue-macros": "^0.11.2",
+    "vitest": "^0.23.4"
+  },
+  "lint-staged": {
+    "*.ts": [
+      "eslint --fix",
+      "git add"
+    ]
   },
   "config": {
     "commitizen": {

packages/foo/src/index.ts → packages/components/README.md


+ 0 - 0
packages/components/audio/index.ts


+ 56 - 0
packages/components/audio/src/index.vue

@@ -0,0 +1,56 @@
+<template>
+  <div class="ui-audio" @click="clickHandler">
+    <audio @play="rotation" ref="audio" autoplay loop>
+      <source :src="src" />
+    </audio>
+    <span v-for="random in randoms" :style="{ '--percent': random }"></span>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import { defineProps, ref, watchEffect, defineExpose } from 'vue';
+  defineProps({
+    src: String,
+  });
+  const audio = ref();
+  const randoms = ref([1, 0.5, 1, 0.5]);
+  const playIng = ref(false);
+
+  let timeout;
+  const rotation = () => {
+    if (!playIng.value) return;
+    for (let i = 0; i < randoms.value.length; i++) {
+      randoms.value[i] = Math.random();
+    }
+    timeout = setTimeout(rotation, 200);
+  };
+
+  watchEffect(() => {
+    if (audio.value) {
+      if (playIng.value) {
+        audio.value.play();
+      } else {
+        audio.value.pause();
+      }
+      clearTimeout(timeout);
+      rotation();
+    }
+  });
+
+  const clickHandler = () => {
+    playIng.value = !playIng.value;
+  };
+
+  defineExpose({
+    play() {
+      playIng.value = true;
+    },
+    pause() {
+      playIng.value = false;
+    },
+  });
+</script>
+
+<script>
+  export default { name: 'ui-audio' };
+</script>

+ 0 - 0
packages/components/index.ts


+ 36 - 0
packages/components/package.json

@@ -0,0 +1,36 @@
+{
+  "name": "@kankan/components",
+  "version": "0.0.1",
+  "main": "dist/index",
+  "types": "dist/index",
+  "files": [
+    "dist"
+  ],
+  "author": {
+    "name": "gemercheung",
+    "email": "gemercheung@gmail.com",
+    "url": "http://gemer.xyz/"
+  },
+  "scripts": {
+    "build": "pnpm run clean && pnpm run compile",
+    "clean": "rimraf -rf ./dist",
+    "compile": "rollup -c",
+    "prepublishOnly": "pnpm run build"
+  },
+  "peerDependencies": {
+    "vue": "^3.2.0"
+  },
+  "devDependencies": {
+    "@rollup/plugin-typescript": "~8.3.4",
+    "rimraf": "~3.0.2",
+    "rollup": "~2.77.3",
+    "rollup-plugin-terser": "^7.0.2",
+    "tslib": "^2.4.0",
+    "typescript": "~4.7.4"
+  },
+  "typedoc": {
+    "entryPoint": "./src/index.ts",
+    "readmeFile": "./README.md",
+    "displayName": "@medici/core"
+  }
+}

+ 21 - 0
packages/components/rollup.config.js

@@ -0,0 +1,21 @@
+import typescript from '@rollup/plugin-typescript';
+import { terser } from 'rollup-plugin-terser';
+import pkg from './package.json';
+
+export default [
+  {
+    input: 'src/index.ts',
+    external: Object.keys(pkg.dependencies),
+    plugins: [
+      typescript({
+        tsconfig: './tsconfig.build.json',
+      }),
+      terser({
+        compress: {
+          drop_console: false,
+        },
+      }),
+    ],
+    output: [{ dir: './dist', format: 'esm', sourcemap: true }],
+  },
+];

+ 11 - 11
packages/foo/tsconfig.build.json

@@ -1,11 +1,11 @@
-{
-  "extends": "../../tsconfig.build.json",
-
-  "compilerOptions": {
-    "outDir": "./dist"
-  },
-
-  "include": [
-    "src/**/*"
-  ]
-}
+{
+  "extends": "../../tsconfig.build.json",
+
+  "compilerOptions": {
+    "outDir": "./dist"
+  },
+
+  "include": [
+    "src/**/*"
+  ]
+}

packages/foo/tsconfig.json → packages/components/tsconfig.json


+ 0 - 19
packages/foo/package.json

@@ -1,19 +0,0 @@
-{
-  "name": "@kankan-components/foo",
-  "version": "1.0.0",
-  "main": "dist/index",
-  "types": "dist/index",
-  "files": [
-    "dist"
-  ],
-  "scripts": {
-    "build": "pnpm run clean && pnpm run compile",
-    "clean": "rimraf -rf ./dist",
-    "compile": "tsc -p tsconfig.build.json",
-    "prepublishOnly": "pnpm run build"
-  },
-  "devDependencies": {
-    "rimraf": "~3.0.2",
-    "typescript": "~4.7.4"
-  }
-}

+ 23 - 0
packages/utils/README.md

@@ -0,0 +1,23 @@
+# @medici/core
+> The medici track system core module
+## installation
+
+> core module provide Main SDK class, All details are revived by @medici/web module
+
+```js
+import * as Medici from '@medici/web';
+const medici = Medici.init({
+    platform: 'web',
+    appId: '7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999',
+    endPoint: 'http://192.168.0.186:3000/api/collect', //服务器
+    trackEndPoint: 'http://192.168.0.186:3000/api/track',
+    config: {
+        user: 'testUser',
+        version: '1',
+    },
+});
+console.log('medici', medici);
+(window as any).medici = medici;
+
+
+```

+ 0 - 0
packages/utils/index.ts


+ 34 - 0
packages/utils/package.json

@@ -0,0 +1,34 @@
+{
+  "name": "@kankan/utils",
+  "version": "0.0.1",
+  "main": "dist/index",
+  "types": "dist/index",
+  "files": [
+    "dist"
+  ],
+  "author": {
+    "name": "gemercheung",
+    "email": "gemercheung@gmail.com",
+    "url": "http://gemer.xyz/"
+  },
+  "scripts": {
+    "build": "pnpm run clean && pnpm run compile",
+    "clean": "rimraf -rf ./dist",
+    "compile": "rollup -c",
+    "prepublishOnly": "pnpm run build"
+  },
+  "dependencies": {},
+  "devDependencies": {
+    "@rollup/plugin-typescript": "~8.3.4",
+    "rimraf": "~3.0.2",
+    "rollup": "~2.77.3",
+    "rollup-plugin-terser": "^7.0.2",
+    "tslib": "^2.4.0",
+    "typescript": "~4.7.4"
+  },
+  "typedoc": {
+    "entryPoint": "./src/index.ts",
+    "readmeFile": "./README.md",
+    "displayName": "@medici/core"
+  }
+}

+ 21 - 0
packages/utils/rollup.config.js

@@ -0,0 +1,21 @@
+import typescript from '@rollup/plugin-typescript';
+import { terser } from 'rollup-plugin-terser';
+import pkg from './package.json';
+
+export default [
+  {
+    input: 'src/index.ts',
+    external: Object.keys(pkg.dependencies),
+    plugins: [
+      typescript({
+        tsconfig: './tsconfig.build.json',
+      }),
+      terser({
+        compress: {
+          drop_console: false,
+        },
+      }),
+    ],
+    output: [{ dir: './dist', format: 'esm', sourcemap: true }],
+  },
+];

+ 11 - 0
packages/utils/tsconfig.build.json

@@ -0,0 +1,11 @@
+{
+  "extends": "../../tsconfig.build.json",
+
+  "compilerOptions": {
+    "outDir": "./dist"
+  },
+
+  "include": [
+    "src/**/*"
+  ]
+}

+ 3 - 0
packages/utils/tsconfig.json

@@ -0,0 +1,3 @@
+{
+  "extends": "../../tsconfig.json"
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 1867 - 53
pnpm-lock.yaml


+ 28 - 0
vitest.config.ts

@@ -0,0 +1,28 @@
+import { defineConfig } from 'vitest/config'
+import Vue from '@vitejs/plugin-vue'
+import VueJsx from '@vitejs/plugin-vue-jsx'
+import VueMacros from 'unplugin-vue-macros/vite'
+
+export default defineConfig({
+  plugins: [
+    VueMacros({
+      setupComponent: false,
+      setupSFC: false,
+      plugins: {
+        vue: Vue(),
+        vueJsx: VueJsx(),
+      },
+    }),
+  ],
+  optimizeDeps: {
+    disabled: true,
+  },
+  test: {
+    clearMocks: true,
+    environment: 'jsdom',
+    setupFiles: ['./vitest.setup.ts'],
+    transformMode: {
+      web: [/\.[jt]sx$/],
+    },
+  },
+})

+ 7 - 0
vitest.setup.ts

@@ -0,0 +1,7 @@
+import { config } from '@vue/test-utils';
+import { vi } from 'vitest';
+import ResizeObserver from 'resize-observer-polyfill';
+
+vi.stubGlobal('ResizeObserver', ResizeObserver);
+
+config.global.stubs = {};