Skip to content
This repository was archived by the owner on May 8, 2025. It is now read-only.

Commit 3c49606

Browse files
committed
Merge branch 'dev'
2 parents d66c664 + 48d3f4b commit 3c49606

File tree

11 files changed

+140
-82
lines changed

11 files changed

+140
-82
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/node_modules/
2+
/dev/
23

34
*.swp
45

generator/index.js

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,36 @@
1-
const defaults = {
2-
preset: 'configure',
3-
replaceComponents: true,
4-
useTheme: false,
5-
useCustomProperties: false,
6-
iconFont: 'md',
7-
installFonts: false,
8-
useAlaCarte: true,
9-
usePolyfill: true,
10-
locale: 'en'
11-
}
12-
13-
module.exports = (api, opts, rootOpts) => {
1+
module.exports = (api, opts) => {
142
const alaCarte = require('./tools/alaCarte')
153
const fonts = require('./tools/fonts')
164
const polyfill = require('./tools/polyfill')
175
const vuetify = require('./tools/vuetify')
186

19-
opts = opts.preset === 'default'
20-
? defaults
21-
: opts
7+
if (opts.preset !== 'configure') {
8+
opts = require(`../presets/${opts.preset}`).plugins['vue-cli-plugin-vuetify']
9+
}
2210

2311
vuetify.addDependencies(api)
24-
opts.useAlaCarte && alaCarte.addDependencies(api)
25-
opts.usePolyfill && polyfill.addDependencies(api)
26-
opts.installFonts && fonts.addDependencies(api, opts.iconFont)
27-
opts.installFonts && fonts.addImports(api, opts.iconFont)
12+
13+
if (opts.useAlaCarte) {
14+
alaCarte.addDependencies(api)
15+
} else if (opts.usePolyfill) {
16+
polyfill.addDependencies(api)
17+
}
18+
19+
if (opts.installFonts) {
20+
fonts.addDependencies(api, opts.iconFont)
21+
fonts.addImports(api, opts.iconFont)
22+
}
23+
2824
vuetify.renderFiles(api, opts)
2925

3026
// adapted from https://github.com/Akryum/vue-cli-plugin-apollo/blob/master/generator/index.js#L68-L91
3127
api.onCreateComplete(() => {
3228
vuetify.addImports(api)
33-
opts.usePolyfill && polyfill.updateBabelConfig(api)
34-
opts.usePolyfill && polyfill.updateBrowsersList(api)
35-
opts.usePolyfill && polyfill.addImports(api)
29+
if (!opts.useAlaCarte && opts.usePolyfill) {
30+
polyfill.updateBabelConfig(api)
31+
polyfill.updateBrowsersList(api)
32+
polyfill.addImports(api)
33+
}
3634
!opts.installFonts && fonts.addLinks(api, opts.iconFont)
3735
vuetify.setHtmlLang(api, opts.locale)
3836
})

index.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
1-
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
2-
3-
module.exports = (api, opts) => {
1+
module.exports = (api) => {
42
const hasVuetifyLoader = Boolean(
53
api.service.pkg.devDependencies['vuetify-loader'] ||
64
api.service.pkg.dependencies['vuetify-loader']
75
)
86

97
if (hasVuetifyLoader) {
8+
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
9+
10+
api.chainWebpack(config => {
11+
config.module
12+
.rule('js')
13+
.include
14+
.add(api.resolve('node_modules/vuetify'))
15+
})
16+
1017
api.configureWebpack(webpackConfig => {
1118
webpackConfig.plugins.push(new VuetifyLoaderPlugin())
1219
})

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue-cli-plugin-vuetify",
3-
"version": "0.3.0",
3+
"version": "0.4.0",
44
"description": "Plugin for Vue CLI 3",
55
"main": "index.js",
66
"scripts": {
@@ -25,6 +25,7 @@
2525
"homepage": "https://github.com/vuetifyjs/vue-cli-plugin-vuetify#readme",
2626
"devDependencies": {
2727
"@vue/cli-service": "^3.0.1",
28+
"vuetify": "^1.3.1",
2829
"vuetify-loader": "^1.0.5"
2930
},
3031
"dependencies": {}

presets/default.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"useConfigFiles": true,
3+
"cssPreprocessor": "scss",
4+
"plugins": {
5+
"vue-cli-plugin-vuetify": {
6+
"preset": "configure",
7+
"replaceComponents": true,
8+
"iconFont": "md",
9+
"installFonts": false,
10+
"locale": "en",
11+
"useAlaCarte": true,
12+
"useCustomProperties": false,
13+
"usePolyfill": false,
14+
"useTheme": false
15+
}
16+
}
17+
}

presets/prototype.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"useConfigFiles": true,
3+
"cssPreprocessor": "scss",
4+
"plugins": {
5+
"vue-cli-plugin-vuetify": {
6+
"preset": "configure",
7+
"replaceComponents": true,
8+
"iconFont": "md",
9+
"installFonts": true,
10+
"locale": "en",
11+
"useAlaCarte": false,
12+
"useCustomProperties": false,
13+
"usePolyfill": false,
14+
"useTheme": true
15+
}
16+
}
17+
}

prompts.js

Lines changed: 19 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1+
const path = require('path')
2+
const resolve = file => path.resolve(__dirname, file)
3+
4+
const iconfonts = require(resolve('./util/iconfonts.js'))
5+
const presets = require(resolve('./util/presets.js'))
6+
const locales = require(resolve('./util/locales.js'))
7+
18
function isCustom (answers) {
29
return answers.preset === 'configure'
310
}
411

512
module.exports = [
613
{
714
name: 'preset',
15+
message: 'Choose a preset:',
816
type: 'list',
917
choices: [
10-
{ name: 'default (recommended)', value: 'default' },
11-
{ name: 'configure', value: 'configure' }
18+
...presets,
19+
{ name: 'Configure (advanced)', value: 'configure' }
1220
],
1321
default: 'default'
1422
},
@@ -35,23 +43,10 @@ module.exports = [
3543
},
3644
{
3745
name: 'iconFont',
38-
type: 'rawlist',
46+
type: 'list',
3947
message: 'Select icon font',
40-
choices: [
41-
'Material Icons (default)',
42-
'Material Design Icons',
43-
'Font Awesome 5',
44-
'Font Awesome 4',
45-
],
46-
default: 0,
47-
filter: function (val) {
48-
return {
49-
'Material Icons (default)': 'md',
50-
'Material Design Icons': 'mdi',
51-
'Font Awesome 5': 'fa',
52-
'Font Awesome 4': 'fa4',
53-
}[val]
54-
},
48+
choices: iconfonts,
49+
default: 'md',
5550
when: isCustom
5651
},
5752
{
@@ -73,47 +68,16 @@ module.exports = [
7368
type: 'confirm',
7469
message: 'Use babel/polyfill?',
7570
default: true,
76-
when: isCustom
71+
when: answers => {
72+
return isCustom(answers) && !answers.useAlaCarte
73+
}
7774
},
7875
{
7976
name: 'locale',
80-
type: 'rawlist',
77+
type: 'list',
8178
message: 'Select locale',
82-
choices: [
83-
'English (default)',
84-
'Catalan',
85-
'Chinese (simplified)',
86-
'Chinese (traditional)',
87-
'Dutch',
88-
'Farsi',
89-
'French',
90-
'German',
91-
'Greek',
92-
'Polish',
93-
'Portuguese',
94-
'Russian',
95-
'Ukrainian',
96-
'Serbian (cyrillic)',
97-
],
98-
default: 0,
99-
filter: function (val) {
100-
return {
101-
'English (default)': 'en',
102-
'Catalan': 'ca',
103-
'Chinese (simplified)': 'zh-Hans',
104-
'Chinese (traditional)': 'zh-Hant',
105-
'Dutch': 'nl',
106-
'Farsi': 'fa',
107-
'French': 'fr',
108-
'German': 'de',
109-
'Greek': 'gr',
110-
'Polish': 'pl',
111-
'Portuguese': 'pt',
112-
'Russian': 'ru',
113-
'Ukrainian': 'uk',
114-
'Serbian (cyrillic)': 'sr-Cyrl',
115-
}[val]
116-
},
79+
choices: locales,
80+
default: 'en',
11781
when: isCustom
11882
}
11983
]

util/iconfonts.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = [
2+
{ name: 'Material Icons (default)', value: 'md' },
3+
{ name: 'Material Design Icons', value: 'mdi' },
4+
{ name: 'Font Awesome 5', value: 'fa' },
5+
{ name: 'Font Awesome 4', value: 'fa4' }
6+
]

util/locales.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const fs = require('fs')
2+
const path = require('path')
3+
const resolve = file => path.resolve(__dirname, file)
4+
5+
const LOCALE_MAP = {
6+
ca: 'Catalan',
7+
de: 'German',
8+
en: 'English (default)',
9+
fa: 'Farsi',
10+
gr: 'Greek',
11+
fr: 'French',
12+
hu: 'Hungary',
13+
it: 'Italy',
14+
nl: 'Dutch',
15+
pl: 'Polish',
16+
pt: 'Portuguese',
17+
ru: 'Russian',
18+
'sr-Cyrl': 'Serbian (cyrillic)',
19+
uk: 'Ukrainian',
20+
'zh-Hans': 'Chinese (simplified)',
21+
'zh-Hant': 'Chinese (traditional)'
22+
}
23+
24+
module.exports = fs.readdirSync('node_modules/vuetify/src/locale').map(locale => {
25+
const value = locale.split('.').shift()
26+
27+
return { name: LOCALE_MAP[value], value }
28+
}).sort()

util/presets.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const fs = require('fs')
2+
const path = require('path')
3+
const resolve = file => path.resolve(__dirname, file)
4+
5+
const PRESET_MAP = {
6+
default: 'Default (recommended)',
7+
prototype: 'Prototype (rapid development)'
8+
}
9+
10+
module.exports = fs.readdirSync(resolve('../presets')).map(preset => {
11+
const value = preset.split('.').shift()
12+
13+
return { name: PRESET_MAP[value], value }
14+
})

0 commit comments

Comments
 (0)