flame-plus 0.1.61 → 0.1.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "flame-plus",
3
3
  "type": "module",
4
- "version": "0.1.61",
4
+ "version": "0.1.63",
5
5
  "description": "基于 element-plus 的组件库",
6
6
  "main": "./flameDist/flame-plus.es.js",
7
7
  "module": "./flameDist/flame-plus.es.js",
@@ -15,7 +15,8 @@
15
15
  "scripts": {
16
16
  "dev": "vite",
17
17
  "build": "vite build",
18
- "preview": "vite preview"
18
+ "preview": "vite preview",
19
+ "gen": "bash ./scripts/gc.sh"
19
20
  },
20
21
  "dependencies": {
21
22
  "@element-plus/icons-vue": "^2.1.0",
package/scripts/gc.sh ADDED
@@ -0,0 +1,89 @@
1
+ #! /bin/bash
2
+
3
+ NAME=$1
4
+
5
+ FILE_PATH=$(cd "$(dirname "${BASH_SOURCE[0]}")/../src" && pwd)
6
+
7
+ re="[[:space:]]+"
8
+
9
+ if [ "$#" -ne 1 ] || [[ $NAME =~ $re ]] || [ "$NAME" == "" ]; then
10
+ echo "Usage: pnpm gc \${name} with no space"
11
+ exit 1
12
+ fi
13
+
14
+ DIRNAME="$FILE_PATH/packages/components/base/$NAME"
15
+ INPUT_NAME=$NAME
16
+
17
+ if [ -d "$DIRNAME" ]; then
18
+ echo "$NAME component already exists, please change it"
19
+ exit 1
20
+ fi
21
+
22
+ NORMALIZED_NAME=""
23
+ for i in $(echo $NAME | sed 's/[_|-]\([a-z]\)/\ \1/;s/^\([a-z]\)/\ \1/'); do
24
+ C=$(echo "${i:0:1}" | tr "[:lower:]" "[:upper:]")
25
+ NORMALIZED_NAME="$NORMALIZED_NAME${C}${i:1}"
26
+ done
27
+ NAME=$NORMALIZED_NAME
28
+
29
+ mkdir -p "$DIRNAME"
30
+ mkdir -p "$DIRNAME/src"
31
+ mkdir -p "$DIRNAME/__tests__"
32
+
33
+ cat > $DIRNAME/src/$INPUT_NAME.vue <<EOF
34
+ <template>
35
+ <div>
36
+ <slot />
37
+ </div>
38
+ </template>
39
+
40
+ <script lang="ts" setup>
41
+ import { ${INPUT_NAME}Props } from './$INPUT_NAME'
42
+
43
+ defineOptions({
44
+ name: 'Flm$NAME',
45
+ })
46
+
47
+ const props = defineProps(${INPUT_NAME}Props)
48
+
49
+ // init here
50
+ </script>
51
+ EOF
52
+
53
+ cat > $DIRNAME/src/$INPUT_NAME.ts <<EOF
54
+ import { buildProps } from 'element-plus/es/utils'
55
+
56
+ import type { ExtractPropTypes } from 'vue'
57
+ import type $NAME from './$INPUT_NAME.vue'
58
+
59
+ export const ${INPUT_NAME}Props = buildProps({})
60
+
61
+ export type ${NAME}Props = ExtractPropTypes<typeof ${INPUT_NAME}Props>
62
+ export type ${NAME}Instance = InstanceType<typeof $NAME>
63
+ EOF
64
+
65
+ cat <<EOF >"$DIRNAME/index.ts"
66
+ import { withInstall } from 'element-plus/es/utils'
67
+ import $NAME from './src/$INPUT_NAME.vue'
68
+
69
+ export const Flm$NAME = withInstall($NAME)
70
+ export default Flm$NAME
71
+
72
+ export * from './src/$INPUT_NAME'
73
+ EOF
74
+
75
+ cat > $DIRNAME/__tests__/$INPUT_NAME.test.tsx <<EOF
76
+ import { mount } from '@vue/test-utils'
77
+ import { describe, expect, test } from 'vitest'
78
+ import $NAME from '../src/$INPUT_NAME.vue'
79
+
80
+ const AXIOM = 'Rem is the best girl'
81
+
82
+ describe('$NAME.vue', () => {
83
+ test('render test', () => {
84
+ const wrapper = mount(() => <$NAME>{AXIOM}</$NAME>)
85
+
86
+ expect(wrapper.text()).toEqual(AXIOM)
87
+ })
88
+ })
89
+ EOF