feat/template-generator

- Add `gc.sh` as template generator
- Add `gc` as npm script to generate boilerplate
This commit is contained in:
JeremyWuuuuu 2020-07-22 21:15:18 +08:00 committed by jeremywu
parent 398fdb3ed0
commit dd01db13f4
2 changed files with 67 additions and 1 deletions

View File

@ -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",

65
scripts/gc.sh Executable file
View File

@ -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="<template>\n
<div>\n
</div>\n
</template>\n
<script lang='ts'>\n
export default {\n
NAME: 'El${NAME}',\n
props: {\n
},\n
setup(props,ctx) { }\n
};\n
</script>\n
<style>\n
</style>\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"