@vuetify/cli 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +75 -136
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -8,7 +8,7 @@ import P, { cwd, stdin, stdout } from "node:process";
8
8
  import * as k$4 from "node:readline";
9
9
  import c from "node:readline";
10
10
  import { ReadStream } from "node:tty";
11
- import fs, { appendFileSync, cpSync, createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, promises, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
11
+ import fs, { appendFileSync, cpSync, createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, promises, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
12
12
  import path, { delimiter, dirname, isAbsolute, join, normalize, resolve } from "node:path";
13
13
  import fs$1, { constants, mkdir, readFile, rm, writeFile } from "node:fs/promises";
14
14
  import { URL as URL$1, fileURLToPath, pathToFileURL } from "node:url";
@@ -9918,14 +9918,8 @@ var en_default = {
9918
9918
  "css_framework": {
9919
9919
  "select": "Which CSS framework?",
9920
9920
  "unocss": { "hint": "Instant on-demand atomic CSS engine" },
9921
- "unocss_wind4": {
9922
- "label": "UnoCSS with Wind4 preset",
9923
- "hint": "soon"
9924
- },
9925
- "unocss_vuetify": {
9926
- "label": "UnoCSS with Vuetify preset",
9927
- "hint": "soon"
9928
- },
9921
+ "unocss_wind4": { "label": "UnoCSS with Wind4 preset" },
9922
+ "unocss_vuetify": { "label": "UnoCSS with Vuetify preset" },
9929
9923
  "tailwindcss": {
9930
9924
  "label": "Tailwind CSS",
9931
9925
  "hint": "A utility-first CSS framework"
@@ -9959,10 +9953,6 @@ var en_default = {
9959
9953
  "hint": "with eslint-config-vuetify"
9960
9954
  },
9961
9955
  "i18n": { "label": "I18n" },
9962
- "vuetify_nuxt_module": {
9963
- "label": "Vuetify Nuxt Module",
9964
- "hint": "Use vuetify-nuxt-module instead of local plugin"
9965
- },
9966
9956
  "mcp": {
9967
9957
  "label": "MCP",
9968
9958
  "hint": "with @vuetify/mcp and @intellectronica/ruler"
@@ -10218,10 +10208,6 @@ var ru_default = {
10218
10208
  "hint": "с eslint-config-vuetify"
10219
10209
  },
10220
10210
  "i18n": { "label": "I18n" },
10221
- "vuetify_nuxt_module": {
10222
- "label": "Vuetify Nuxt Module",
10223
- "hint": "Использовать vuetify-nuxt-module вместо локального плагина"
10224
- },
10225
10211
  "mcp": {
10226
10212
  "label": "MCP",
10227
10213
  "hint": "с @vuetify/mcp и @intellectronica/ruler"
@@ -10312,6 +10298,7 @@ const i18n$2 = new import_require.I18n({
10312
10298
  ru: ru_default
10313
10299
  }, {
10314
10300
  defaultLocale: "en",
10301
+ enableFallback: true,
10315
10302
  locale: normalizeLocale$1(getCurrentLocale())
10316
10303
  });
10317
10304
 
@@ -126331,14 +126318,25 @@ async function prompt(args, cwd = process.cwd()) {
126331
126318
  if (type === "vuetify" && platform === "nuxt") return qt({
126332
126319
  message: i18n$1.t("prompts.css_framework.select"),
126333
126320
  initialValue: "none",
126334
- options: [{
126335
- label: "Tailwind CSS",
126336
- value: "tailwindcss",
126337
- hint: i18n$1.t("prompts.css_framework.tailwindcss.hint")
126338
- }, {
126339
- label: i18n$1.t("prompts.css_framework.none"),
126340
- value: "none"
126341
- }]
126321
+ options: [
126322
+ {
126323
+ label: i18n$1.t("prompts.css_framework.none"),
126324
+ value: "none"
126325
+ },
126326
+ {
126327
+ label: "Tailwind CSS",
126328
+ value: "tailwindcss",
126329
+ hint: i18n$1.t("prompts.css_framework.tailwindcss.hint")
126330
+ },
126331
+ {
126332
+ label: i18n$1.t("prompts.css_framework.unocss_wind4.label"),
126333
+ value: "unocss-wind4"
126334
+ },
126335
+ {
126336
+ label: i18n$1.t("prompts.css_framework.unocss_vuetify.label"),
126337
+ value: "unocss-vuetify"
126338
+ }
126339
+ ]
126342
126340
  });
126343
126341
  return qt({
126344
126342
  message: i18n$1.t("prompts.css_framework.select"),
@@ -126370,15 +126368,11 @@ async function prompt(args, cwd = process.cwd()) {
126370
126368
  },
126371
126369
  {
126372
126370
  label: i18n$1.t("prompts.css_framework.unocss_wind4.label"),
126373
- disabled: true,
126374
- value: "unocss-wind4",
126375
- hint: i18n$1.t("prompts.css_framework.unocss_wind4.hint")
126371
+ value: "unocss-wind4"
126376
126372
  },
126377
126373
  {
126378
126374
  label: i18n$1.t("prompts.css_framework.unocss_vuetify.label"),
126379
- disabled: true,
126380
- value: "unocss-vuetify",
126381
- hint: i18n$1.t("prompts.css_framework.unocss_vuetify.hint")
126375
+ value: "unocss-vuetify"
126382
126376
  }
126383
126377
  ]
126384
126378
  });
@@ -126394,7 +126388,7 @@ async function prompt(args, cwd = process.cwd()) {
126394
126388
  if (args.features) return Promise.resolve(args.features);
126395
126389
  if (!args.interactive) return Promise.resolve([]);
126396
126390
  const platform = results.platform || args.platform;
126397
- const type = results.type || args.type;
126391
+ results.type || args.type;
126398
126392
  return platform === "vue" ? Lt({
126399
126393
  message: i18n$1.t("prompts.features.select", { hint: dim("↑/↓ to navigate, space to select, a to toggle all, enter to confirm") }),
126400
126394
  options: [
@@ -126432,11 +126426,6 @@ async function prompt(args, cwd = process.cwd()) {
126432
126426
  value: "eslint",
126433
126427
  hint: i18n$1.t("prompts.features.eslint.hint")
126434
126428
  },
126435
- ...type === "vuetify0" ? [] : [{
126436
- label: i18n$1.t("prompts.features.vuetify_nuxt_module.label"),
126437
- value: "vuetify-nuxt-module",
126438
- hint: i18n$1.t("prompts.features.vuetify_nuxt_module.hint")
126439
- }],
126440
126429
  {
126441
126430
  label: i18n$1.t("prompts.features.mcp.label"),
126442
126431
  value: "mcp",
@@ -126451,11 +126440,7 @@ async function prompt(args, cwd = process.cwd()) {
126451
126440
  value: "i18n"
126452
126441
  }
126453
126442
  ],
126454
- initialValues: [
126455
- "eslint",
126456
- ...type === "vuetify0" ? [] : ["vuetify-nuxt-module"],
126457
- "mcp"
126458
- ],
126443
+ initialValues: ["eslint", "mcp"],
126459
126444
  required: false
126460
126445
  });
126461
126446
  },
@@ -126488,9 +126473,7 @@ async function prompt(args, cwd = process.cwd()) {
126488
126473
  clientHints: ({ results }) => {
126489
126474
  if (args.clientHints !== void 0) return Promise.resolve(args.clientHints);
126490
126475
  if (!args.interactive) return Promise.resolve(false);
126491
- const platform = results.platform || args.platform;
126492
- const features = results.features || args.features || [];
126493
- if (platform === "nuxt" && features.includes("vuetify-nuxt-module")) return Mt({
126476
+ if ((results.platform || args.platform) === "nuxt") return Mt({
126494
126477
  message: i18n$1.t("prompts.client_hints.enable"),
126495
126478
  initialValue: false
126496
126479
  });
@@ -147825,10 +147808,10 @@ var dependencies = {
147825
147808
  "unocss": "^66.5.12",
147826
147809
  "@unocss/transformer-directives": "^66.6.0",
147827
147810
  "@unocss/nuxt": "^66.5.12",
147828
- "unocss-preset-vuetify": "^0.1.1",
147811
+ "unocss-preset-vuetify": "^0.2.1",
147829
147812
  "tailwindcss": "^4.1.18",
147813
+ "@tailwindcss/postcss": "^4.1.18",
147830
147814
  "@tailwindcss/vite": "^4.1.18",
147831
- "@nuxtjs/tailwindcss": "^7.0.0-beta.1",
147832
147815
  "pathe": "^2.0.3",
147833
147816
  "@vuetify/loader-shared": "^2.1.1",
147834
147817
  "@intellectronica/ruler": "^0.3.18",
@@ -148037,6 +148020,37 @@ const mcp = {
148037
148020
  }
148038
148021
  };
148039
148022
 
148023
+ //#endregion
148024
+ //#region ../shared/src/features/client-hints.ts
148025
+ const nuxtClientHints = {
148026
+ name: "client-hints",
148027
+ apply: async ({ cwd, isNuxt }) => {
148028
+ if (!isNuxt) return;
148029
+ const configPath = join$1(cwd, "nuxt.config.ts");
148030
+ const mod = await loadFile(configPath);
148031
+ const options = getDefaultExportOptions(mod);
148032
+ if (options) {
148033
+ options.vuetify ??= {};
148034
+ options.vuetify.moduleOptions ??= {};
148035
+ options.vuetify.moduleOptions.ssrClientHints = {
148036
+ reloadOnFirstRequest: false,
148037
+ viewportSize: true,
148038
+ prefersColorScheme: true,
148039
+ prefersReducedMotion: true,
148040
+ prefersColorSchemeOptions: { useBrowserThemeOnly: false }
148041
+ };
148042
+ options.vuetify.vuetifyOptions ??= {};
148043
+ options.vuetify.vuetifyOptions.theme ??= {};
148044
+ options.vuetify.vuetifyOptions.theme.defaultTheme = "dark";
148045
+ options.vuetify.vuetifyOptions.theme.themes = {
148046
+ light: {},
148047
+ dark: {}
148048
+ };
148049
+ }
148050
+ await writeFile(configPath, mod.generate().code);
148051
+ }
148052
+ };
148053
+
148040
148054
  //#endregion
148041
148055
  //#region ../shared/src/features/pinia.ts
148042
148056
  const pinia = {
@@ -148090,7 +148104,7 @@ export const useAppStore = defineStore('app', {
148090
148104
 
148091
148105
  //#endregion
148092
148106
  //#region ../shared/package.json
148093
- var version$1 = "1.0.2";
148107
+ var version$1 = "1.1.0";
148094
148108
 
148095
148109
  //#endregion
148096
148110
  //#region ../shared/src/utils/getTemplateSource.ts
@@ -148237,11 +148251,7 @@ const tailwindcss = {
148237
148251
  if (isNuxt) {
148238
148252
  pkg.devDependencies = pkg.devDependencies || {};
148239
148253
  pkg.devDependencies["tailwindcss"] = dependencies.tailwindcss;
148240
- pkg.devDependencies["@nuxtjs/tailwindcss"] = dependencies["@nuxtjs/tailwindcss"];
148241
- const configPath = join$1(cwd, "nuxt.config.ts");
148242
- const mod = await loadFile(configPath);
148243
- addNuxtModule(mod, "@nuxtjs/tailwindcss");
148244
- await writeFile(configPath, mod.generate().code);
148254
+ pkg.devDependencies["@tailwindcss/postcss"] = dependencies["@tailwindcss/postcss"];
148245
148255
  } else {
148246
148256
  pkg.devDependencies = pkg.devDependencies || {};
148247
148257
  pkg.devDependencies["tailwindcss"] = dependencies.tailwindcss;
@@ -148276,7 +148286,7 @@ async function applyUnocssBase({ cwd, pkg, isTypescript, isNuxt }, options = {})
148276
148286
  if (pkg.devDependencies) {
148277
148287
  delete pkg.devDependencies["tailwindcss"];
148278
148288
  delete pkg.devDependencies["@tailwindcss/vite"];
148279
- delete pkg.devDependencies["@nuxtjs/tailwindcss"];
148289
+ delete pkg.devDependencies["@tailwindcss/postcss"];
148280
148290
  }
148281
148291
  if (isNuxt) {
148282
148292
  pkg.devDependencies["@unocss/nuxt"] = dependencies["@unocss/nuxt"];
@@ -148320,68 +148330,6 @@ const unocssVuetify = {
148320
148330
  }
148321
148331
  };
148322
148332
 
148323
- //#endregion
148324
- //#region ../shared/src/features/vuetify-nuxt-manual.ts
148325
- const vuetifyNuxtManual = {
148326
- name: "vuetify-nuxt-manual",
148327
- apply: async ({ cwd, pkg, isNuxt }) => {
148328
- if (!isNuxt) return;
148329
- const configPath = join$1(cwd, "nuxt.config.ts");
148330
- pkg.devDependencies = pkg.devDependencies || {};
148331
- pkg.devDependencies["vite-plugin-vuetify"] = dependencies["vite-plugin-vuetify"];
148332
- pkg.devDependencies["@vuetify/loader-shared"] = dependencies["@vuetify/loader-shared"];
148333
- pkg.devDependencies["pathe"] = dependencies.pathe;
148334
- const mod = await loadFile(configPath);
148335
- mod.imports.$prepend({
148336
- from: "vite-plugin-vuetify",
148337
- imported: "transformAssetUrls"
148338
- });
148339
- const options = getDefaultExportOptions(mod);
148340
- if (options) {
148341
- options.build ||= {};
148342
- options.build.transpile ||= [];
148343
- if (!options.build.transpile.includes("vuetify")) options.build.transpile.push("vuetify");
148344
- options.vite ||= {};
148345
- options.vite.vue ||= {};
148346
- options.vite.vue.template ||= {};
148347
- options.vite.vue.template.transformAssetUrls = builders.raw("transformAssetUrls");
148348
- }
148349
- await writeFile(configPath, mod.generate().code);
148350
- }
148351
- };
148352
-
148353
- //#endregion
148354
- //#region ../shared/src/features/vuetify-nuxt-module.ts
148355
- const vuetifyNuxtModule = {
148356
- name: "vuetify-nuxt-module",
148357
- apply: async ({ cwd, pkg, clientHints, isNuxt }) => {
148358
- if (!isNuxt) return;
148359
- pkg.dependencies = pkg.dependencies || {};
148360
- pkg.dependencies["vuetify-nuxt-module"] = dependencies["vuetify-nuxt-module"];
148361
- const configPath = join$1(cwd, "nuxt.config.ts");
148362
- const mod = await loadFile(configPath);
148363
- const manualModulePath = join$1(cwd, "modules/vuetify.ts");
148364
- if (existsSync(manualModulePath)) unlinkSync(manualModulePath);
148365
- const options = getDefaultExportOptions(mod);
148366
- if (options) {
148367
- options.modules ||= [];
148368
- options.modules.push("vuetify-nuxt-module");
148369
- options.vuetify = {
148370
- moduleOptions: {},
148371
- vuetifyOptions: {}
148372
- };
148373
- if (clientHints) options.vuetify.moduleOptions.ssrClientHints = {
148374
- reloadOnFirstRequest: false,
148375
- viewportSize: true,
148376
- prefersColorScheme: true,
148377
- prefersReducedMotion: true,
148378
- prefersColorSchemeOptions: { useBrowserThemeOnly: false }
148379
- };
148380
- }
148381
- await writeFile(configPath, mod.generate().code);
148382
- }
148383
- };
148384
-
148385
148333
  //#endregion
148386
148334
  //#region ../shared/src/features/index.ts
148387
148335
  const features = {
@@ -148391,15 +148339,14 @@ const features = {
148391
148339
  i18n,
148392
148340
  eslint,
148393
148341
  mcp,
148394
- "vuetify-nuxt-module": vuetifyNuxtModule,
148395
- "vuetify-nuxt-manual": vuetifyNuxtManual,
148342
+ "client-hints": nuxtClientHints,
148396
148343
  unocss,
148397
148344
  "unocss-wind4": unocssWind4,
148398
148345
  "unocss-vuetify": unocssVuetify,
148399
148346
  tailwindcss,
148400
148347
  "css-none": cssNone
148401
148348
  };
148402
- async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, clientHints, type) {
148349
+ async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, type) {
148403
148350
  for (const name of featureNames) {
148404
148351
  const feature = features[name];
148405
148352
  if (feature) await feature.apply({
@@ -148407,7 +148354,6 @@ async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, clien
148407
148354
  pkg,
148408
148355
  isTypescript,
148409
148356
  isNuxt,
148410
- clientHints,
148411
148357
  type
148412
148358
  });
148413
148359
  }
@@ -149393,10 +149339,10 @@ async function installDependencies(root = process.cwd(), manager = packageManage
149393
149339
  //#endregion
149394
149340
  //#region ../shared/src/functions/scaffold.ts
149395
149341
  function resolveTemplateName(templates, platform, type, features) {
149396
- if (platform !== "vue" || type !== "vuetify") return templates[platform][type];
149397
- if (features.includes("unocss-wind4")) return "vue/unocss-wind4";
149398
- if (features.includes("unocss-vuetify")) return "vue/unocss-vuetify";
149399
- if (features.includes("tailwindcss")) return "vue/tailwind";
149342
+ if (type !== "vuetify") return templates[platform][type];
149343
+ if (features.includes("unocss-wind4")) return `${platform}/unocss-wind4`;
149344
+ if (features.includes("unocss-vuetify")) return `${platform}/unocss-vuetify`;
149345
+ if (features.includes("tailwindcss")) return `${platform}/tailwind`;
149400
149346
  return templates[platform][type];
149401
149347
  }
149402
149348
  async function resolveSharedAssetsPath() {
@@ -149434,7 +149380,7 @@ async function applySharedAssets(projectRoot, platform, type) {
149434
149380
  try {
149435
149381
  if (needsFavicon) copySharedAsset(join$1(assets.path, "favicon.ico"), join$1(projectRoot, "public", "favicon.ico"));
149436
149382
  if (needsLogo) {
149437
- const logoRoot = platform === "nuxt" ? join$1(projectRoot, "assets") : join$1(projectRoot, "src", "assets");
149383
+ const logoRoot = platform === "nuxt" ? join$1(projectRoot, "app", "assets") : join$1(projectRoot, "src", "assets");
149438
149384
  copySharedAsset(join$1(assets.path, "logo.png"), join$1(logoRoot, "logo.png"));
149439
149385
  copySharedAsset(join$1(assets.path, "logo.svg"), join$1(logoRoot, "logo.svg"));
149440
149386
  }
@@ -149444,7 +149390,7 @@ async function applySharedAssets(projectRoot, platform, type) {
149444
149390
  }
149445
149391
  }
149446
149392
  async function scaffold(options, callbacks = {}) {
149447
- const { cwd, name, platform, features, typescript, type, packageManager, install, force, clientHints, debug: debugFlag } = options;
149393
+ const { cwd, name, platform, features, typescript, type, packageManager, install, force, debug: debugFlag } = options;
149448
149394
  const debug = (...msg) => debugFlag && console.log("DEBUG:", ...msg);
149449
149395
  const projectRoot = join$1(cwd, name);
149450
149396
  debug("projectRoot=", projectRoot);
@@ -149493,13 +149439,7 @@ async function scaffold(options, callbacks = {}) {
149493
149439
  let pkg;
149494
149440
  pkg = await readPackageJSON$1(join$1(projectRoot, "package.json"));
149495
149441
  callbacks.onConfigStart?.();
149496
- if (features && features.length > 0) await applyFeatures(projectRoot, features, pkg, !!typescript, platform === "nuxt", clientHints, type);
149497
- if (platform === "nuxt" && type !== "vuetify0" && (!features || !features.includes("vuetify-nuxt-module"))) await vuetifyNuxtManual.apply({
149498
- cwd: projectRoot,
149499
- pkg,
149500
- isTypescript: !!typescript,
149501
- isNuxt: true
149502
- });
149442
+ if (features && features.length > 0) await applyFeatures(projectRoot, features, pkg, !!typescript, platform === "nuxt", type);
149503
149443
  callbacks.onConfigEnd?.();
149504
149444
  const pkgPath = join$1(projectRoot, "package.json");
149505
149445
  if (existsSync(pkgPath)) {
@@ -149613,12 +149553,11 @@ async function createVuetify(options, commandOptions) {
149613
149553
  name: context.name,
149614
149554
  platform: context.platform,
149615
149555
  type: context.type,
149616
- features: context.features,
149556
+ features: [...context.features, ...context.clientHints ? ["client-hints"] : []],
149617
149557
  typescript: !!context.typescript,
149618
149558
  packageManager: context.packageManager,
149619
149559
  install: context.install,
149620
149560
  force: context.force,
149621
- clientHints: context.clientHints,
149622
149561
  debug: args.debug
149623
149562
  }, {
149624
149563
  onDownloadStart: (templateName) => {
@@ -151050,7 +150989,7 @@ const JsonReporter = { report: async (data, options) => {
151050
150989
 
151051
150990
  //#endregion
151052
150991
  //#region package.json
151053
- var version = "1.0.2";
150992
+ var version = "1.1.0";
151054
150993
 
151055
150994
  //#endregion
151056
150995
  //#region src/commands/analyze.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuetify/cli",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "Vuetify CLI",
5
5
  "type": "module",
6
6
  "files": [
@@ -35,7 +35,7 @@
35
35
  "open": "^11.0.0",
36
36
  "pathe": "^2.0.3",
37
37
  "tsdown": "^0.20.3",
38
- "@vuetify/cli-shared": "1.0.2"
38
+ "@vuetify/cli-shared": "1.1.0"
39
39
  },
40
40
  "dependencies": {
41
41
  "@typescript-eslint/parser": "^8.54.0"