Skip to content
This repository was archived by the owner on May 8, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
963898a
feat: icon choice
jacekkarczmarczyk Aug 13, 2018
7a5b81e
bump vuetify to 1.2.0, customProperties
jacekkarczmarczyk Aug 14, 2018
8e09a44
sets proper iconfont in vuetify options
jacekkarczmarczyk Aug 14, 2018
bb2190c
added font awesome 4
jacekkarczmarczyk Aug 14, 2018
fff9c8a
fixes
jacekkarczmarczyk Aug 14, 2018
5fa18c2
spaces
jacekkarczmarczyk Aug 14, 2018
310bf8b
fixed icons
jacekkarczmarczyk Aug 14, 2018
68db384
fixed icons
jacekkarczmarczyk Aug 14, 2018
a199d82
update vuetify.ts
jacekkarczmarczyk Aug 15, 2018
e3bec4c
fixed indentation
jacekkarczmarczyk Aug 15, 2018
0d645fe
removed getMain, extracted fonts to a separate file, added roboto as …
jacekkarczmarczyk Aug 15, 2018
b861be1
passing opts to template
jacekkarczmarczyk Aug 15, 2018
16b5aef
fix: index of last <link>
jacekkarczmarczyk Aug 15, 2018
0ee08ae
added language choice, simplified templates
jacekkarczmarczyk Aug 15, 2018
4289e5a
updated prompt text
jacekkarczmarczyk Aug 15, 2018
9b86185
tweaks
jacekkarczmarczyk Aug 15, 2018
db52162
refactor
jacekkarczmarczyk Aug 15, 2018
21c7d49
added dutch locale
jacekkarczmarczyk Aug 15, 2018
7a20b5a
removed doubled package name
jacekkarczmarczyk Aug 16, 2018
f4c1736
fix: locale location (js/ts)
jacekkarczmarczyk Aug 18, 2018
e51f930
ingore line in babel config
jacekkarczmarczyk Aug 19, 2018
eb6ecc8
fix: lint errors
jacekkarczmarczyk Aug 20, 2018
c88e388
feat: set lang in <html>
jacekkarczmarczyk Aug 20, 2018
c864722
feat: added farsi language
jacekkarczmarczyk Aug 23, 2018
2f04012
feat: added catalan language
jacekkarczmarczyk Aug 24, 2018
40a9313
fixed file mode
jacekkarczmarczyk Aug 25, 2018
e1831b7
removed trailing comma
jacekkarczmarczyk Aug 25, 2018
a38814d
added vue.config.js
jacekkarczmarczyk Aug 25, 2018
b7f152a
vuetify 1.2.0
jacekkarczmarczyk Aug 28, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 0 additions & 53 deletions generator/helpers.js

This file was deleted.

164 changes: 17 additions & 147 deletions generator/index.js
Original file line number Diff line number Diff line change
@@ -1,153 +1,23 @@
module.exports = (api, opts, rootOpts) => {
const helpers = require('./helpers')(api)

api.extendPackage({
dependencies: {
vuetify: "^1.1.11"
}
})

if (opts.useAlaCarte) {
api.extendPackage({
devDependencies: {
"babel-plugin-transform-imports": "^1.4.1",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.1",
}
})
}

if (opts.usePolyfill) {
api.extendPackage({
devDependencies: {
"@babel/polyfill": "^7.0.0-beta.49",
}
})
}

if (api.hasPlugin('electron-builder') === true) {
// material icons pkg for electron
api.extendPackage({
devDependencies: {
"material-design-icons-iconfont": "^3.0.3",
}
})

try {
api.injectImports(helpers.getMain(),
`import 'material-design-icons-iconfont/dist/material-design-icons.css'`
)
} catch(e) {
console.error(e)
}
}


// Render vuetify plugin file
api.render(api.hasPlugin('typescript') ? {
'./src/plugins/vuetify.ts': './templates/default/src/plugins/vuetify.ts'
} : {
'./src/plugins/vuetify.js': './templates/default/src/plugins/vuetify.js'
}, opts)

// Render files if we're replacing
const fs = require('fs')
const routerPath = api.resolve('./src/router.js')
opts.router = fs.existsSync(routerPath)

if (opts.replaceComponents) {
const files = {
'./src/App.vue': './templates/default/src/App.vue',
'./src/assets/logo.png': './templates/default/src/assets/logo.png'
}

if (opts.router) {
files['./src/views/Home.vue'] = './templates/default/src/views/Home.vue'
} else {
api.render('./templates/hw')
}

api.render(files, opts)
}
const alaCarte = require('./tools/alaCarte')
const fonts = require('./tools/fonts')
const polyfill = require('./tools/polyfill')
const vuetify = require('./tools/vuetify')

vuetify.addDependencies(api)
opts.useAlaCarte && alaCarte.addDependencies(api)
opts.usePolyfill && polyfill.addDependencies(api)
opts.installFonts && fonts.addDependencies(api, opts.iconFont)
opts.installFonts && fonts.addImports(api, opts.iconFont)
vuetify.renderFiles(api, opts)

// adapted from https://github.com/Akryum/vue-cli-plugin-apollo/blob/master/generator/index.js#L68-L91
api.onCreateComplete(() => {
// Modify main.js
helpers.updateFile(helpers.getMain(), lines => {
const vueImportIndex = lines.findIndex(line => line.match(/^import Vue/))

lines.splice(vueImportIndex + 1, 0, 'import \'./plugins/vuetify\'')

return lines
})

// Add polyfill
if (opts.usePolyfill) {
helpers.updateBabelConfig(cfg => {
if (!cfg.presets) return cfg

const vuePresetIndex = cfg.presets.findIndex(p => Array.isArray(p) ? p[0] === '@vue/app' : p === '@vue/app')
const isArray = Array.isArray(cfg.presets[vuePresetIndex])

if (vuePresetIndex < 0) return cfg

if (isArray) {
cfg.presets[vuePresetIndex][1]['useBuiltIns'] = 'entry'
} else {
cfg.presets[vuePresetIndex] = [
'@vue/app',
{
useBuiltIns: 'entry'
}
]
}

return cfg
})

helpers.updateFile(helpers.getMain(), lines => {
if (!lines.find(l => l.match(/^(import|require).*@babel\/polyfill.*$/))) {
lines.unshift('import \'@babel/polyfill\'')
}

return lines
})
}

// If a-la-carte, update babel
if (opts.useAlaCarte) {
helpers.updateBabelConfig(cfg => {
if (cfg.plugins === undefined) {
cfg.plugins = []
}

cfg.plugins.push([
'transform-imports',
{
vuetify: {
transform: 'vuetify/es5/components/${member}',
preventFullImport: true
}
}
])

return cfg
})
}

// Add Material Icons (unless electron)
if(api.hasPlugin('electron-builder') === false) {
const indexPath = api.resolve('./public/index.html')

let content = fs.readFileSync(indexPath, { encoding: 'utf8' })

const lines = content.split(/\r?\n/g).reverse()

const lastLink = lines.findIndex(line => line.match(/^\s*<link/))
lines[lastLink] += '\n <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet">'

content = lines.reverse().join('\n')
fs.writeFileSync(indexPath, content, { encoding: 'utf8' })
}
vuetify.addImports(api)
opts.usePolyfill && polyfill.updateBabelConfig(api)
opts.usePolyfill && polyfill.addImports(api)
opts.useAlaCarte && alaCarte.updateBabelConfig(api)
!opts.installFonts && fonts.addLinks(api, opts.iconFont)
vuetify.setHtmlLang(api, opts.locale)
})
}
50 changes: 49 additions & 1 deletion generator/templates/default/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,50 @@
>
<v-toolbar-side-icon @click.stop="drawer = !drawer"></v-toolbar-side-icon>
<v-btn icon @click.stop="miniVariant = !miniVariant">
<%_ if (options.iconFont === 'md') { _%>
<v-icon v-html="miniVariant ? 'chevron_right' : 'chevron_left'"></v-icon>
<%_ } else if (options.iconFont === 'mdi') { _%>
<v-icon v-html="miniVariant ? 'mdi-chevron-right' : 'mdi-chevron-left'"></v-icon>
<%_ } else if (options.iconFont === 'fa') { _%>
<v-icon v-html="miniVariant ? 'fas fa-chevron-right' : 'fas fa-chevron-left'"></v-icon>
<%_ } else if (options.iconFont === 'fa4') { _%>
<v-icon v-html="miniVariant ? 'fa-chevron-right' : 'fa-chevron-left'"></v-icon>
<%_ } _%>
</v-btn>
<v-btn icon @click.stop="clipped = !clipped">
<%_ if (options.iconFont === 'md') { _%>
<v-icon>web</v-icon>
<%_ } else if (options.iconFont === 'mdi') { _%>
<v-icon>mdi-web</v-icon>
<%_ } else if (options.iconFont === 'fa') { _%>
<v-icon>fas fa-globe</v-icon>
<%_ } else if (options.iconFont === 'fa4') { _%>
<v-icon>fa-globe</v-icon>
<%_ } _%>
</v-btn>
<v-btn icon @click.stop="fixed = !fixed">
<v-icon>remove</v-icon>
<%_ if (options.iconFont === 'md') { _%>
<v-icon>web</v-icon>
<%_ } else if (options.iconFont === 'mdi') { _%>
<v-icon>mdi-minus</v-icon>
<%_ } else if (options.iconFont === 'fa') { _%>
<v-icon>fas fa-minus</v-icon>
<%_ } else if (options.iconFont === 'fa4') { _%>
<v-icon>fa-minus</v-icon>
<%_ } _%>
</v-btn>
<v-toolbar-title v-text="title"></v-toolbar-title>
<v-spacer></v-spacer>
<v-btn icon @click.stop="rightDrawer = !rightDrawer">
<%_ if (options.iconFont === 'md') { _%>
<v-icon>menu</v-icon>
<%_ } else if (options.iconFont === 'mdi') { _%>
<v-icon>mdi-menu</v-icon>
<%_ } else if (options.iconFont === 'fa') { _%>
<v-icon>fas fa-bars</v-icon>
<%_ } else if (options.iconFont === 'fa4') { _%>
<v-icon>fa-bars</v-icon>
<%_ } _%>
</v-btn>
</v-toolbar>
<v-content>
Expand All @@ -61,7 +93,15 @@
<v-list>
<v-list-tile @click="right = !right">
<v-list-tile-action>
<%_ if (options.iconFont === 'md') { _%>
<v-icon>compare_arrows</v-icon>
<%_ } else if (options.iconFont === 'mdi') { _%>
<v-icon>mdi-arrows-left-right-bold-outline</v-icon>
<%_ } else if (options.iconFont === 'fa') { _%>
<v-icon>fas fa-exchange-alt</v-icon>
<%_ } else if (options.iconFont === 'fa4') { _%>
<v-icon>fa-exchange</v-icon>
<%_ } _%>
</v-list-tile-action>
<v-list-tile-title>Switch drawer (click me)</v-list-tile-title>
</v-list-tile>
Expand Down Expand Up @@ -91,7 +131,15 @@ export default {
drawer: true,
fixed: false,
items: [{
<%_ if (options.iconFont === 'md') { _%>
icon: 'bubble_chart',
<%_ } else if (options.iconFont === 'mdi') { _%>
icon: 'mdi-chart-bubble',
<%_ } else if (options.iconFont === 'fa') { _%>
icon: 'fas fa-shapes',
<%_ } else if (options.iconFont === 'fa4') { _%>
icon: 'fa-bullseye',
<%_ } _%>
title: 'Inspire'
}],
miniVariant: false,
Expand Down
Loading