From 809cfbabd1ae07d5220c4790f6067f3efdf8e8e0 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Sun, 13 Dec 2020 17:22:24 -0800 Subject: [PATCH 01/14] refactor(helpers): remove repetetive update file helper function Replace with utils package update file function. --- .../vue-cli-plugin-vuetify/generator/tools/fonts.js | 4 +++- .../generator/tools/helpers.js | 12 ------------ .../generator/tools/polyfill.js | 4 +++- .../generator/tools/vuetify.js | 4 +++- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js b/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js index 1d91978d..700314f9 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js @@ -1,3 +1,5 @@ +const { updateFile } = require("@vuetify/cli-plugin-utils") + const helpers = require('./helpers') const fonts = { mdi: { @@ -52,7 +54,7 @@ function addImports (api, iconFont) { } function addLinks (api, iconFont) { - helpers.updateFile(api, './public/index.html', lines => { + updateFile(api, './public/index.html', lines => { const lastLink = lines.reverse().findIndex(line => line.match(/^\s*<\/head>/)) lines.splice(lastLink + 1, 0, ` ${fonts.roboto.link}`) diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/helpers.js b/packages/vue-cli-plugin-vuetify/generator/tools/helpers.js index 55a99376..7908caa1 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/helpers.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/helpers.js @@ -32,18 +32,6 @@ function updateBabelConfig (api, callback) { } } -function updateFile (api, file, callback) { - file = api.resolve(file) - let content = fs.existsSync(file) - ? fs.readFileSync(file, { encoding: 'utf8' }) - : '' - - content = callback(content.split(/\r?\n/g)).join('\n') - - fs.writeFileSync(file, content, { encoding: 'utf8' }) -} - module.exports = { updateBabelConfig, - updateFile, } diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js b/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js index c3d71078..126df7f0 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js @@ -1,6 +1,8 @@ const helpers = require('./helpers') const fs = require('fs') +const { updateFile } = require("@vuetify/cli-plugin-utils") + function addDependencies (api) { api.extendPackage({ dependencies: { @@ -55,7 +57,7 @@ function updateBrowsersList (api) { { encoding: 'utf8' }, ) } else { - helpers.updateFile(api, './.browserslistrc', lines => { + updateFile(api, './.browserslistrc', lines => { if (!lines.length) { return [ '> 1%', diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js b/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js index 7774a24c..4b72da0f 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js @@ -2,6 +2,8 @@ const fs = require('fs') const helpers = require('./helpers') +const { updateFile } = require("@vuetify/cli-plugin-utils") + function addDependencies (api) { api.extendPackage({ dependencies: { @@ -53,7 +55,7 @@ function addImports (api) { } function setHtmlLang (api, locale) { - helpers.updateFile(api, './public/index.html', lines => { + updateFile(api, './public/index.html', lines => { const htmlIndex = lines.findIndex(line => line.match(/]+(\s|>)/)) if (htmlIndex !== -1) { From 145624a95ebc43de5ab9fedb712468e5ac702dbb Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Sun, 13 Dec 2020 17:45:58 -0800 Subject: [PATCH 02/14] improvement(utils): add update babel config function to utils package --- packages/@vuetify/cli-plugin-utils/index.js | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index 9e9b58dc..06cb2dd9 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -104,6 +104,39 @@ function mergeSassVariables (opt, file) { return opt } +// Update Babel config file with supplied callback +function updateBabelConfig(api, callback) { + let config, configPath; + + const rcPath = api.resolve("./babel.config.js"); + const pkgPath = api.resolve("./package.json"); + if (fs.existsSync(rcPath)) { + configPath = rcPath; + config = callback(require(rcPath)); + } else if (fs.existsSync(pkgPath)) { + configPath = pkgPath; + config = JSON.parse(fs.readFileSync(pkgPath, { encoding: "utf8" })); + + if (config.babel) { + config.babel = callback(config.babel); + } else { + // TODO: error handling here? + } + } + + if (configPath) { + const moduleExports = configPath !== pkgPath ? "module.exports = " : ""; + + fs.writeFileSync( + configPath, + `${moduleExports}${JSON.stringify(config, null, 2)}`, + { encoding: "utf8" } + ); + } else { + // TODO: handle if babel config doesn't exist + } +} + // Update local file with supplied callback function updateFile (api, file, callback) { const { EOL } = require('os') @@ -189,6 +222,7 @@ module.exports = { injectHtmlLink, injectSassVariables, mergeSassVariables, + updateBabelConfig, updateFile, updateVuetifyObject, VuetifyPresetGenerator, From 133ad0810ddb38c2735f5fa2e73e9a70340c5d35 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Sun, 13 Dec 2020 17:48:54 -0800 Subject: [PATCH 03/14] improvement(utils): add addimport and addimports functions to utils package --- packages/@vuetify/cli-plugin-utils/index.js | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index 06cb2dd9..11977421 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -2,6 +2,31 @@ const semver = require('semver') const fs = require('fs') +// Check for existence of file and add import +function addImport (api, file, data, folder, end) { + // sass & scss file types + for (const ext of ['sass', 'scss']) { + const path = `${folder}/${file}.${ext}` + + // If file doesn't exist in user + // project, continue to next + if (!fileExists(api, `src/${path}`)) continue + + // If file exists, push it into + // the import statement + data.push(`@import '@/${path}${end}`) + } +} + +// Go through each folder and add available imports +function addImports (api, file, data, end) { + // supported folders that can contain + // a variables or lists file + for (const folder of ['sass', 'scss', 'styles']) { + addImport(api, file, data, folder, end) + } +} + // Injects a element into ./public/index.html function injectHtmlLink (api, href, attrs) { updateFile(api, './public/index.html', lines => { @@ -216,6 +241,8 @@ function VuetifyPresetGenerator (api, preset, onCreateComplete) { } module.exports = { + addImport, + addImports, fileExists, generatePreset, injectGoogleFontLink, From 273e2c08e7987483ae1d9e5ef921f9a3c0cfe5cb Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Mon, 14 Dec 2020 17:35:53 -0800 Subject: [PATCH 04/14] fix(utils): remove unique helpers --- packages/@vuetify/cli-plugin-utils/index.js | 27 --------------------- 1 file changed, 27 deletions(-) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index 11977421..06cb2dd9 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -2,31 +2,6 @@ const semver = require('semver') const fs = require('fs') -// Check for existence of file and add import -function addImport (api, file, data, folder, end) { - // sass & scss file types - for (const ext of ['sass', 'scss']) { - const path = `${folder}/${file}.${ext}` - - // If file doesn't exist in user - // project, continue to next - if (!fileExists(api, `src/${path}`)) continue - - // If file exists, push it into - // the import statement - data.push(`@import '@/${path}${end}`) - } -} - -// Go through each folder and add available imports -function addImports (api, file, data, end) { - // supported folders that can contain - // a variables or lists file - for (const folder of ['sass', 'scss', 'styles']) { - addImport(api, file, data, folder, end) - } -} - // Injects a element into ./public/index.html function injectHtmlLink (api, href, attrs) { updateFile(api, './public/index.html', lines => { @@ -241,8 +216,6 @@ function VuetifyPresetGenerator (api, preset, onCreateComplete) { } module.exports = { - addImport, - addImports, fileExists, generatePreset, injectGoogleFontLink, From 6d3e8452daa9ba32fb9a845dc98077ad07677ea9 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Mon, 14 Dec 2020 17:43:18 -0800 Subject: [PATCH 05/14] refactor(plugin-utils): replace duplicate code with fileExists util --- packages/@vuetify/cli-plugin-utils/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index 06cb2dd9..a0f5e91e 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -67,7 +67,7 @@ function generatePreset (api, preset, onCreateComplete) { const file = 'src/plugins/vuetify.js' const plugin = api.resolve(file) - if (!fs.existsSync(plugin)) { + if (!fileExists(api, plugin)) { console.warn('Unable to locate `vuetify.js` plugin file in `src/plugins`.') return @@ -110,10 +110,10 @@ function updateBabelConfig(api, callback) { const rcPath = api.resolve("./babel.config.js"); const pkgPath = api.resolve("./package.json"); - if (fs.existsSync(rcPath)) { + if (fileExists(api, rcPath)) { configPath = rcPath; config = callback(require(rcPath)); - } else if (fs.existsSync(pkgPath)) { + } else if (fileExists(api, pkgPath)) { configPath = pkgPath; config = JSON.parse(fs.readFileSync(pkgPath, { encoding: "utf8" })); @@ -141,7 +141,7 @@ function updateBabelConfig(api, callback) { function updateFile (api, file, callback) { const { EOL } = require('os') file = api.resolve(file) - let content = fs.existsSync(file) + let content = fileExists(api, file) ? fs.readFileSync(file, { encoding: 'utf8' }) : '' From 3824ed582e39d5fccab8c11d507a41a6a9133114 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Tue, 15 Dec 2020 20:54:49 -0800 Subject: [PATCH 06/14] improvement(plugin-utils): add resolve function to utils package --- packages/@vuetify/cli-plugin-utils/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index a0f5e91e..c3827c5a 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -104,6 +104,11 @@ function mergeSassVariables (opt, file) { return opt } +// Resolve the supplied file +function resolve(file) { + return path.resolve(__dirname, file); +} + // Update Babel config file with supplied callback function updateBabelConfig(api, callback) { let config, configPath; @@ -222,6 +227,7 @@ module.exports = { injectHtmlLink, injectSassVariables, mergeSassVariables, + resolve, updateBabelConfig, updateFile, updateVuetifyObject, From 75574ae6ae0efc2434aa3275308d10872de8363c Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:29:15 -0800 Subject: [PATCH 07/14] Update packages/@vuetify/cli-plugin-utils/index.js Co-authored-by: John Leider <9064066+johnleider@users.noreply.github.com> --- packages/@vuetify/cli-plugin-utils/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index c3827c5a..e5fc7b9a 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -115,6 +115,7 @@ function updateBabelConfig(api, callback) { const rcPath = api.resolve("./babel.config.js"); const pkgPath = api.resolve("./package.json"); + if (fileExists(api, rcPath)) { configPath = rcPath; config = callback(require(rcPath)); From 37291a1064cac88f1e76d0220cae332477c4cef6 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:29:30 -0800 Subject: [PATCH 08/14] Update packages/vue-cli-plugin-vuetify/generator/tools/fonts.js Co-authored-by: John Leider <9064066+johnleider@users.noreply.github.com> --- packages/vue-cli-plugin-vuetify/generator/tools/fonts.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js b/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js index 700314f9..35f91a66 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/fonts.js @@ -1,3 +1,4 @@ +// Utilities const { updateFile } = require("@vuetify/cli-plugin-utils") const helpers = require('./helpers') From 4f29944d8e8bb99979170eb9d46d4fcc2deb03b0 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:29:41 -0800 Subject: [PATCH 09/14] Update packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js Co-authored-by: John Leider <9064066+johnleider@users.noreply.github.com> --- packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js b/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js index 126df7f0..274975ef 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js @@ -1,6 +1,5 @@ const helpers = require('./helpers') const fs = require('fs') - const { updateFile } = require("@vuetify/cli-plugin-utils") function addDependencies (api) { From 27851bd16758f734f3652bc590a62edc416976fc Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:29:50 -0800 Subject: [PATCH 10/14] Update packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js Co-authored-by: John Leider <9064066+johnleider@users.noreply.github.com> --- packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js b/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js index 274975ef..145aff12 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/polyfill.js @@ -1,3 +1,4 @@ +// Utilities const helpers = require('./helpers') const fs = require('fs') const { updateFile } = require("@vuetify/cli-plugin-utils") From 78c7759bac8a9931fd2d64de393c6717603bdede Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:30:00 -0800 Subject: [PATCH 11/14] Update packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js Co-authored-by: John Leider <9064066+johnleider@users.noreply.github.com> --- packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js b/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js index 4b72da0f..4966f0f7 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js @@ -1,7 +1,6 @@ // Imports const fs = require('fs') const helpers = require('./helpers') - const { updateFile } = require("@vuetify/cli-plugin-utils") function addDependencies (api) { From be101a8808b58d1972ecdcfd35abb53ca9d5fc27 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:30:07 -0800 Subject: [PATCH 12/14] Update packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js Co-authored-by: John Leider <9064066+johnleider@users.noreply.github.com> --- packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js b/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js index 4966f0f7..60b07e64 100644 --- a/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js +++ b/packages/vue-cli-plugin-vuetify/generator/tools/vuetify.js @@ -1,4 +1,5 @@ // Imports +// Utilities const fs = require('fs') const helpers = require('./helpers') const { updateFile } = require("@vuetify/cli-plugin-utils") From 11553e0fdb4868c67eb19d788c85203cb1e4d498 Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:39:01 -0800 Subject: [PATCH 13/14] improvement(plugin-utils): add parseFile util function --- packages/@vuetify/cli-plugin-utils/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index c3827c5a..f837a183 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -104,6 +104,11 @@ function mergeSassVariables (opt, file) { return opt } + +function parseFile(filePath) { + return JSON.parse(fs.readFileSync(filePath, { encoding: "utf8" })); +} + // Resolve the supplied file function resolve(file) { return path.resolve(__dirname, file); @@ -120,7 +125,7 @@ function updateBabelConfig(api, callback) { config = callback(require(rcPath)); } else if (fileExists(api, pkgPath)) { configPath = pkgPath; - config = JSON.parse(fs.readFileSync(pkgPath, { encoding: "utf8" })); + config = parseFile(pkgPath); if (config.babel) { config.babel = callback(config.babel); @@ -147,7 +152,7 @@ function updateFile (api, file, callback) { const { EOL } = require('os') file = api.resolve(file) let content = fileExists(api, file) - ? fs.readFileSync(file, { encoding: 'utf8' }) + ? parseFile(file) : '' content = callback(content.split(/\r?\n/g)).join(EOL) @@ -227,6 +232,7 @@ module.exports = { injectHtmlLink, injectSassVariables, mergeSassVariables, + parseFile, resolve, updateBabelConfig, updateFile, From a70d4e99fdfe83f27f140147707f2f58f18b922d Mon Sep 17 00:00:00 2001 From: Elijah Kotyluk Date: Fri, 18 Dec 2020 14:41:55 -0800 Subject: [PATCH 14/14] refactor(plugin-utils): parsefile: add description comment --- packages/@vuetify/cli-plugin-utils/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuetify/cli-plugin-utils/index.js b/packages/@vuetify/cli-plugin-utils/index.js index f837a183..52cb90cd 100644 --- a/packages/@vuetify/cli-plugin-utils/index.js +++ b/packages/@vuetify/cli-plugin-utils/index.js @@ -104,7 +104,7 @@ function mergeSassVariables (opt, file) { return opt } - +// JSON-ify the contents of the supplied file function parseFile(filePath) { return JSON.parse(fs.readFileSync(filePath, { encoding: "utf8" })); }