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 @@ + + + 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: '