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

Commit 1c8bce1

Browse files
refactor(v3): VuetifyLoaderPlugin (#308)
1 parent 5dfdbf1 commit 1c8bce1

File tree

4 files changed

+62
-13
lines changed

4 files changed

+62
-13
lines changed

packages/vue-cli-plugin-vuetify/generator/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = (api, opts) => {
2+
const { fileExists } = require('../util/helpers')
23
const alaCarte = require('./tools/alaCarte')
34
const fonts = require('./tools/fonts')
45
const polyfill = require('./tools/polyfill')
@@ -31,7 +32,7 @@ module.exports = (api, opts) => {
3132
if (opts.installFonts) fonts.addDependencies(api, opts.iconFont)
3233

3334
// Update vue.config.js for transpileDependency if AlaCarte
34-
if (opts.useAlaCarte && !opts.useVite) alaCarte.addVueConfigTranspileDependency(api)
35+
if (opts.useAlaCarte && !opts.useVite) alaCarte.addVueConfigVuetify(api, opts.useV3)
3536

3637
// Update templates
3738
vuetify.renderFiles(api, { opts })
@@ -42,13 +43,20 @@ module.exports = (api, opts) => {
4243
polyfill.updateBabelConfig(api)
4344
polyfill.updateBrowsersList(api)
4445
}
46+
4547
if (!opts.installFonts) fonts.addLinks(api, opts.iconFont)
4648
vuetify.setHtmlLang(api, opts.locale)
4749

48-
if (fs.existsSync('src/public/index.html')) {
50+
if (fileExists(api, 'src/public/index.html')) {
4951
fs.unlinkSync(api.resolve('src/public/index.html'))
5052
}
5153

54+
const configFile = api.resolve('./vue.config.js');
55+
56+
if (fileExists(api, configFile)) {
57+
vuetify.addVuetifyLoaderDocsLink(configFile)
58+
}
59+
5260
api.exitLog('Discord community: https://community.vuetifyjs.com')
5361
api.exitLog('Github: https://github.com/vuetifyjs/vuetify')
5462
api.exitLog('Support Vuetify: https://github.com/sponsors/johnleider')

packages/vue-cli-plugin-vuetify/generator/tools/alaCarte.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ function addDependencies (api, useV3) {
1616
api.extendPackage(deps)
1717
}
1818

19+
function addVueConfigPluginOptions(api) {
20+
api.extendPackage({
21+
vue: {
22+
pluginOptions: {
23+
vuetify: {},
24+
},
25+
},
26+
})
27+
}
28+
1929
function addVueConfigTranspileDependency (api) {
2030
api.extendPackage({
2131
vue: {
@@ -26,7 +36,11 @@ function addVueConfigTranspileDependency (api) {
2636
})
2737
}
2838

39+
function addVueConfigVuetify(api, useV3) {
40+
useV3 ? addVueConfigPluginOptions(api) : addVueConfigTranspileDependency(api)
41+
}
42+
2943
module.exports = {
3044
addDependencies,
31-
addVueConfigTranspileDependency,
45+
addVueConfigVuetify,
3246
}

packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// Imports
2+
const fs = require('fs')
23
const helpers = require('./helpers')
34

45
function addDependencies (api, v3) {
@@ -28,7 +29,6 @@ function renderFiles (api, { opts }) {
2829
}
2930

3031
// Render files if we're replacing
31-
const fs = require('fs')
3232
const routerPath = api.resolve(`./src/router/index.${ext}`)
3333
const storePath = api.resolve(`./src/store/index.${ext}`)
3434

@@ -77,9 +77,24 @@ function setHtmlLang (api, locale) {
7777
})
7878
}
7979

80+
function addVuetifyLoaderDocsLink(configFile) {
81+
const vuetifyLoaderLink = '// https://github.com/vuetifyjs/vuetify-loader/tree/next/packages/vuetify-loader'
82+
83+
let content = fs.readFileSync(configFile, { encoding: 'utf8' })
84+
85+
content = content.replace('vuetify: {}', `vuetify: {\n\t\t\t${vuetifyLoaderLink}\n\t\t}`)
86+
87+
fs.writeFileSync(
88+
configFile,
89+
content,
90+
{ encoding: 'utf8' }
91+
)
92+
}
93+
8094
module.exports = {
8195
addDependencies,
8296
addImports,
97+
addVuetifyLoaderDocsLink,
8398
renderFiles,
8499
setHtmlLang,
85100
}

packages/vue-cli-plugin-vuetify/index.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const { mergeRules } = require('./util/helpers')
33

44
const semver = require('semver')
55

6-
module.exports = (api) => {
6+
module.exports = (api, options) => {
77
const dependencies = api.service.pkg.dependencies || {}
88
const devDependencies = api.service.pkg.devDependencies || {}
99

@@ -12,15 +12,27 @@ module.exports = (api) => {
1212
dependencies['vuetify-loader'],
1313
)
1414

15+
const isVue3 = semver.major(require('vue/package.json').version) === 3
16+
1517
if (hasVuetifyLoader) {
16-
const vueVersion = semver.major(require('vue/package.json').version)
17-
const VuetifyLoaderPlugin = vueVersion === 3 ? require('vuetify-loader').VuetifyLoaderPlugin : require('vuetify-loader/lib/plugin')
18+
if (isVue3) {
19+
const VuetifyLoaderPlugin = require('vuetify-loader').VuetifyLoaderPlugin
20+
21+
api.chainWebpack(config => {
22+
config
23+
.plugin('VuetifyLoaderPlugin')
24+
.use(VuetifyLoaderPlugin, [options.pluginOptions.vuetify])
25+
})
26+
}
27+
else {
28+
const VuetifyLoaderPlugin = require('vuetify-loader')
1829

19-
api.chainWebpack(config => {
20-
config
21-
.plugin('VuetifyLoaderPlugin')
22-
.use(VuetifyLoaderPlugin)
23-
})
30+
api.chainWebpack(config => {
31+
config
32+
.plugin('VuetifyLoaderPlugin')
33+
.use(VuetifyLoaderPlugin)
34+
})
35+
}
2436
}
2537

2638
// Resolve asset references from components
@@ -64,7 +76,7 @@ module.exports = (api) => {
6476
}
6577

6678
// Bootstrap SASS Variables
67-
api.chainWebpack(config => {
79+
if (!isVue3) api.chainWebpack(config => {
6880
['vue-modules', 'vue', 'normal-modules', 'normal'].forEach(match => {
6981
for (let i = 0; i < 2; i++) {
7082
const boolean = Boolean(i)

0 commit comments

Comments
 (0)