first commit

This commit is contained in:
Akhil Gupta
2021-05-29 15:20:50 +05:30
commit d25c30a7b2
194 changed files with 49873 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
---
to: "src/components/<%= h.changeCase.kebab(name).toLowerCase().slice(0, 5) === 'base-' ? '_' : '' %><%= h.changeCase.kebab(name) %>.vue"
---
<%
if (blocks.indexOf('script') !== -1) {
%><script>
export default {
<% if (blocks.indexOf('template') === -1) {
%>render(h) {
return <div/>
}<% } %>
}
</script>
<%
}
if (blocks.indexOf('template') !== -1) {
%>
<template>
<div/>
</template>
<%
}
if (blocks.indexOf('style') !== -1) {
%>
<style lang="scss" module>
@import '@design';
</style><%
}
%>

View File

@@ -0,0 +1,45 @@
const _ = require('lodash')
module.exports = [
{
type: 'input',
name: 'name',
message: 'Name:',
validate(value) {
if (!value.length) {
return 'Components must have a name.'
}
const fileName = _.kebabCase(value)
if (fileName.indexOf('-') === -1) {
return 'Component names should contain at least two words to avoid conflicts with existing and future HTML elements.'
}
return true
},
},
{
type: 'multiselect',
name: 'blocks',
message: 'Blocks:',
initial: ['script', 'template', 'style'],
choices: [
{
name: 'script',
message: '<script>',
},
{
name: 'template',
message: '<template>',
},
{
name: 'style',
message: '<style>',
},
],
validate(value) {
if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
return 'Components require at least a <script> or <template> tag.'
}
return true
},
},
]

View File

@@ -0,0 +1,16 @@
---
to: "src/components/<%= h.changeCase.kebab(name).toLowerCase().slice(0, 5) === 'base-' ? '_' : '' %><%= h.changeCase.kebab(name) %>.unit.js"
---
<%
let fileName = h.changeCase.kebab(name).toLowerCase()
const importName = h.changeCase.pascal(fileName)
if (fileName.slice(0, 5) === 'base-') {
fileName = '_' + fileName
}
%>import <%= importName %> from './<%= fileName %>'
describe('@components/<%= fileName %>', () => {
it('exports a valid component', () => {
expect(<%= importName %>).toBeAComponent()
})
})

View File

@@ -0,0 +1,6 @@
---
to: tests/e2e/specs/<%= h.changeCase.kebab(name) %>.e2e.js
---
describe('<%= h.changeCase.pascal(name) %>', () => {
})

View File

@@ -0,0 +1,13 @@
module.exports = [
{
type: 'input',
name: 'name',
message: 'Name:',
validate(value) {
if (!value.length) {
return 'Components must have a name.'
}
return true
},
},
]

View File

@@ -0,0 +1,18 @@
---
to: "src/router/layouts/<%= h.changeCase.kebab(name) %>.vue"
---
<template>
<div :class="$style.container">
<slot />
</div>
</template>
<style lang="scss" module>
@import '@design';
.container {
min-width: $size-content-width-min;
max-width: $size-content-width-max;
margin: 0 auto;
}
</style>

View File

@@ -0,0 +1,13 @@
module.exports = [
{
type: 'input',
name: 'name',
message: 'Name:',
validate(value) {
if (!value.length) {
return 'Layout components must have a name.'
}
return true
},
},
]

View File

@@ -0,0 +1,19 @@
---
to: "src/router/layouts/<%= h.changeCase.kebab(name) %>.unit.js"
---
<%
const fileName = h.changeCase.kebab(name)
const importName = h.changeCase.pascal(fileName) + 'Layout'
%>import <%= importName %> from './<%= fileName %>'
describe('@layouts/<%= fileName %>', () => {
it('renders its content', () => {
const slotContent = '<p>Hello!</p>'
const { element } = shallowMount(<%= importName %>, {
slots: {
default: slotContent,
},
})
expect(element.innerHTML).toContain(slotContent)
})
})

View File

@@ -0,0 +1,10 @@
---
to: src/state/modules/<%= h.changeCase.kebab(name) %>.js
---
export const state = {}
export const getters = {}
export const mutations = {}
export const actions = {}

View File

@@ -0,0 +1,13 @@
module.exports = [
{
type: 'input',
name: 'name',
message: 'Name:',
validate(value) {
if (!value.length) {
return 'Vuex modules must have a name.'
}
return true
},
},
]

View File

@@ -0,0 +1,13 @@
---
to: src/state/modules/<%= h.changeCase.kebab(name) %>.unit.js
---
<%
const fileName = h.changeCase.kebab(name)
const importName = h.changeCase.camel(fileName) + 'Module'
%>import * as <%= importName %> from './<%= fileName %>'
describe('@state/modules/<%= fileName %>', () => {
it('exports a valid Vuex module', () => {
expect(<%= importName %>).toBeAVuexModule()
})
})

View File

@@ -0,0 +1,13 @@
module.exports = [
{
type: 'input',
name: 'name',
message: 'Name:',
validate(value) {
if (!value.length) {
return 'Utility functions must have a name.'
}
return true
},
},
]

View File

@@ -0,0 +1,14 @@
---
to: "src/utils/<%= h.changeCase.kebab(name) %>.unit.js"
---
<%
const fileName = h.changeCase.kebab(name)
const importName = h.changeCase.camel(fileName)
%>import <%= importName %> from './<%= fileName %>'
describe('@utils/<%= fileName %>', () => {
it('says hello', () => {
const result = <%= importName %>()
expect(result).toEqual('hello')
})
})

View File

@@ -0,0 +1,9 @@
---
to: "src/utils/<%= h.changeCase.kebab(name) %>.js"
---
<%
const fileName = h.changeCase.kebab(name)
const importName = h.changeCase.camel(fileName)
%>export default function <%= importName %>() {
return 'hello'
}

View File

@@ -0,0 +1,18 @@
module.exports = [
{
type: 'input',
name: 'name',
message: 'Name:',
validate(value) {
if (!value.length) {
return 'View components must have a name.'
}
return true
},
},
{
type: 'confirm',
name: 'useStyles',
message: 'Add <style> block?',
},
]

View File

@@ -0,0 +1,13 @@
---
to: "src/router/views/<%= h.changeCase.kebab(name) %>.unit.js"
---
<%
const fileName = h.changeCase.kebab(name)
const importName = h.changeCase.pascal(fileName)
%>import <%= importName %> from './<%= fileName %>'
describe('@views/<%= fileName %>', () => {
it('is a valid view', () => {
expect(<%= importName %>).toBeAViewComponent()
})
})

View File

@@ -0,0 +1,31 @@
---
to: "src/router/views/<%= h.changeCase.kebab(name) %>.vue"
---
<%
const fileName = h.changeCase.kebab(name)
const importName = h.changeCase.pascal(fileName)
const titleName = h.changeCase.title(name)
%><script>
import Layout from '@layouts/main.vue'
export default {
page: {
title: '<%= titleName %>',
meta: [{ name: 'description', content: 'The <%= titleName %> page.' }],
},
components: { Layout }
}
</script>
<template>
<Layout>
<%= titleName %>
</Layout>
</template>
<%
if (useStyles) { %>
<style lang="scss" module>
@import '@design';
</style>
<% } %>