diff --git a/package.json b/package.json
index 19b00aa8..c4fb285e 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,8 @@
"lint": "eslint --ext .js,.vue src",
"test": "npm run lint",
"test:unit": "vue-cli-service test:unit",
- "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
+ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
+ "new": "plop"
},
"husky": {
"hooks": {
@@ -87,6 +88,7 @@
"lint-staged": "7.2.2",
"mockjs": "1.0.1-beta3",
"node-sass": "^4.9.0",
+ "plop": "2.3.0",
"runjs": "^4.3.2",
"sass-loader": "^7.1.0",
"script-ext-html-webpack-plugin": "2.1.3",
diff --git a/plop-templates/component/index.vue b/plop-templates/component/index.vue
new file mode 100644
index 00000000..326c7251
--- /dev/null
+++ b/plop-templates/component/index.vue
@@ -0,0 +1,13 @@
+
+ div
+ {{banana}}
+
+
+
diff --git a/plopfile.js b/plopfile.js
new file mode 100644
index 00000000..a016be6c
--- /dev/null
+++ b/plopfile.js
@@ -0,0 +1,61 @@
+const notEmpty = name => {
+ return v => {
+ if (!v || v.trim === '') {
+ return `${name} is required`
+ } else {
+ return true
+ }
+ }
+}
+
+module.exports = function(plop) {
+ const name = '{{ properCase name }}'
+ plop.setGenerator('component', {
+ description: 'generate vue component',
+ prompts: [{
+ type: 'input',
+ name: 'name',
+ message: 'component name please',
+ validate: notEmpty('name')
+ },
+ {
+ type: 'checkbox',
+ name: 'blocks',
+ message: 'Blocks:',
+ choices: [
+ {
+ name: '',
+ value: 'template',
+ checked: true
+ },
+ {
+ name: '