diff --git a/package.json b/package.json index 1545cfecf0..af442fd1a7 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "scripts": { "dev": "vite", "build": "vite build", - "cz": "npx git-cz" + "cz": "npx git-cz", + "gc": "sh ./scripts/gc.sh" }, "dependencies": { "vue": "^3.0.0-rc.1", diff --git a/scripts/gc.sh b/scripts/gc.sh new file mode 100755 index 0000000000..5770450f74 --- /dev/null +++ b/scripts/gc.sh @@ -0,0 +1,65 @@ +#! /bin/bash + +export NAME=$1 + +export FILE_PATH=$(cd "$(dirname "${BASH_SOURCE[0]}")/../packages" && pwd) + +re="[[:space:]]+" + +if [ "$#" -ne 1 ] || [[ $NAME =~ $re ]] || [ "$NAME" == "" ]; then + echo "Usage: yarn gc \${name} with no space" + exit 1 +fi + +DIRNAME="$FILE_PATH/$NAME" + +if [ -d "$DIRNAME" ]; then + echo "$NAME component already exists, please change it" + exit 1 +fi +NORMALIZED_NAME="" +for i in $(echo $NAME | sed 's/[_|-]\([a-z]\)/\ \1/;s/^\([a-z]\)/\ \1/'); do + C=$(echo "${i:0:1}" | tr "[:lower:]" "[:upper:]") + NORMALIZED_NAME="$NORMALIZED_NAME${C}${i:1}" +done +NAME=$NORMALIZED_NAME + +TEMPLATE_INDEX_VUE="\n +\n +\n +" + +TEMPLATE_INDEX_TS="\n +import { App } from 'vue'\n +import ${NAME} from './src/index.vue'\n +export default (app: App) => {\n + app.component(${NAME}.name, ${NAME})\n +} +" +TEMPLATE_PKG_JSON="\n +{\n + \"name\": \"eleplus-${NAME}\",\n + \"description\": \"\",\n + \"version\": \"0.1.0\",\n + \"main\": \"./index.ts\",\n + \"license\": \"MIT\",\n + \"dependencies\": {}\n +}\n +" + +mkdir -p "$DIRNAME" +mkdir -p "$DIRNAME/src" +echo $TEMPLATE_INDEX_VUE >>"$DIRNAME/src/index.vue" +echo $TEMPLATE_INDEX_TS >>"$DIRNAME/index.ts" +echo $TEMPLATE_PKG_JSON >>"$DIRNAME/package.json"