create-vuetify0 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
@@ -7,7 +7,7 @@ import P, { stdin, stdout } from "node:process";
7
7
  import * as k$1 from "node:readline";
8
8
  import c from "node:readline";
9
9
  import { ReadStream } from "node:tty";
10
- import fs, { appendFileSync, cpSync, createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
10
+ import fs, { appendFileSync, cpSync, createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
11
11
  import path, { dirname, isAbsolute, join } from "node:path";
12
12
  import fs$1, { constants, mkdir, readFile, rm, writeFile } from "node:fs/promises";
13
13
  import { findPackage, readPackage, readPackageJSON, updatePackage, writePackageJSON } from "pkg-types";
@@ -9948,14 +9948,8 @@ var en_default = {
9948
9948
  "css_framework": {
9949
9949
  "select": "Which CSS framework?",
9950
9950
  "unocss": { "hint": "Instant on-demand atomic CSS engine" },
9951
- "unocss_wind4": {
9952
- "label": "UnoCSS with Wind4 preset",
9953
- "hint": "soon"
9954
- },
9955
- "unocss_vuetify": {
9956
- "label": "UnoCSS with Vuetify preset",
9957
- "hint": "soon"
9958
- },
9951
+ "unocss_wind4": { "label": "UnoCSS with Wind4 preset" },
9952
+ "unocss_vuetify": { "label": "UnoCSS with Vuetify preset" },
9959
9953
  "tailwindcss": {
9960
9954
  "label": "Tailwind CSS",
9961
9955
  "hint": "A utility-first CSS framework"
@@ -9989,10 +9983,6 @@ var en_default = {
9989
9983
  "hint": "with eslint-config-vuetify"
9990
9984
  },
9991
9985
  "i18n": { "label": "I18n" },
9992
- "vuetify_nuxt_module": {
9993
- "label": "Vuetify Nuxt Module",
9994
- "hint": "Use vuetify-nuxt-module instead of local plugin"
9995
- },
9996
9986
  "mcp": {
9997
9987
  "label": "MCP",
9998
9988
  "hint": "with @vuetify/mcp and @intellectronica/ruler"
@@ -10248,10 +10238,6 @@ var ru_default = {
10248
10238
  "hint": "с eslint-config-vuetify"
10249
10239
  },
10250
10240
  "i18n": { "label": "I18n" },
10251
- "vuetify_nuxt_module": {
10252
- "label": "Vuetify Nuxt Module",
10253
- "hint": "Использовать vuetify-nuxt-module вместо локального плагина"
10254
- },
10255
10241
  "mcp": {
10256
10242
  "label": "MCP",
10257
10243
  "hint": "с @vuetify/mcp и @intellectronica/ruler"
@@ -10342,6 +10328,7 @@ const i18n$2 = new import_require.I18n({
10342
10328
  ru: ru_default
10343
10329
  }, {
10344
10330
  defaultLocale: "en",
10331
+ enableFallback: true,
10345
10332
  locale: normalizeLocale$1(getCurrentLocale())
10346
10333
  });
10347
10334
 
@@ -27258,14 +27245,25 @@ async function prompt(args, cwd = process.cwd()) {
27258
27245
  if (type === "vuetify" && platform === "nuxt") return qt({
27259
27246
  message: i18n$1.t("prompts.css_framework.select"),
27260
27247
  initialValue: "none",
27261
- options: [{
27262
- label: "Tailwind CSS",
27263
- value: "tailwindcss",
27264
- hint: i18n$1.t("prompts.css_framework.tailwindcss.hint")
27265
- }, {
27266
- label: i18n$1.t("prompts.css_framework.none"),
27267
- value: "none"
27268
- }]
27248
+ options: [
27249
+ {
27250
+ label: i18n$1.t("prompts.css_framework.none"),
27251
+ value: "none"
27252
+ },
27253
+ {
27254
+ label: "Tailwind CSS",
27255
+ value: "tailwindcss",
27256
+ hint: i18n$1.t("prompts.css_framework.tailwindcss.hint")
27257
+ },
27258
+ {
27259
+ label: i18n$1.t("prompts.css_framework.unocss_wind4.label"),
27260
+ value: "unocss-wind4"
27261
+ },
27262
+ {
27263
+ label: i18n$1.t("prompts.css_framework.unocss_vuetify.label"),
27264
+ value: "unocss-vuetify"
27265
+ }
27266
+ ]
27269
27267
  });
27270
27268
  return qt({
27271
27269
  message: i18n$1.t("prompts.css_framework.select"),
@@ -27297,15 +27295,11 @@ async function prompt(args, cwd = process.cwd()) {
27297
27295
  },
27298
27296
  {
27299
27297
  label: i18n$1.t("prompts.css_framework.unocss_wind4.label"),
27300
- disabled: true,
27301
- value: "unocss-wind4",
27302
- hint: i18n$1.t("prompts.css_framework.unocss_wind4.hint")
27298
+ value: "unocss-wind4"
27303
27299
  },
27304
27300
  {
27305
27301
  label: i18n$1.t("prompts.css_framework.unocss_vuetify.label"),
27306
- disabled: true,
27307
- value: "unocss-vuetify",
27308
- hint: i18n$1.t("prompts.css_framework.unocss_vuetify.hint")
27302
+ value: "unocss-vuetify"
27309
27303
  }
27310
27304
  ]
27311
27305
  });
@@ -27321,7 +27315,7 @@ async function prompt(args, cwd = process.cwd()) {
27321
27315
  if (args.features) return Promise.resolve(args.features);
27322
27316
  if (!args.interactive) return Promise.resolve([]);
27323
27317
  const platform = results.platform || args.platform;
27324
- const type = results.type || args.type;
27318
+ results.type || args.type;
27325
27319
  return platform === "vue" ? Lt({
27326
27320
  message: i18n$1.t("prompts.features.select", { hint: dim("↑/↓ to navigate, space to select, a to toggle all, enter to confirm") }),
27327
27321
  options: [
@@ -27359,11 +27353,6 @@ async function prompt(args, cwd = process.cwd()) {
27359
27353
  value: "eslint",
27360
27354
  hint: i18n$1.t("prompts.features.eslint.hint")
27361
27355
  },
27362
- ...type === "vuetify0" ? [] : [{
27363
- label: i18n$1.t("prompts.features.vuetify_nuxt_module.label"),
27364
- value: "vuetify-nuxt-module",
27365
- hint: i18n$1.t("prompts.features.vuetify_nuxt_module.hint")
27366
- }],
27367
27356
  {
27368
27357
  label: i18n$1.t("prompts.features.mcp.label"),
27369
27358
  value: "mcp",
@@ -27378,11 +27367,7 @@ async function prompt(args, cwd = process.cwd()) {
27378
27367
  value: "i18n"
27379
27368
  }
27380
27369
  ],
27381
- initialValues: [
27382
- "eslint",
27383
- ...type === "vuetify0" ? [] : ["vuetify-nuxt-module"],
27384
- "mcp"
27385
- ],
27370
+ initialValues: ["eslint", "mcp"],
27386
27371
  required: false
27387
27372
  });
27388
27373
  },
@@ -27415,9 +27400,7 @@ async function prompt(args, cwd = process.cwd()) {
27415
27400
  clientHints: ({ results }) => {
27416
27401
  if (args.clientHints !== void 0) return Promise.resolve(args.clientHints);
27417
27402
  if (!args.interactive) return Promise.resolve(false);
27418
- const platform = results.platform || args.platform;
27419
- const features = results.features || args.features || [];
27420
- if (platform === "nuxt" && features.includes("vuetify-nuxt-module")) return Mt({
27403
+ if ((results.platform || args.platform) === "nuxt") return Mt({
27421
27404
  message: i18n$1.t("prompts.client_hints.enable"),
27422
27405
  initialValue: false
27423
27406
  });
@@ -27770,10 +27753,10 @@ var dependencies = {
27770
27753
  "unocss": "^66.5.12",
27771
27754
  "@unocss/transformer-directives": "^66.6.0",
27772
27755
  "@unocss/nuxt": "^66.5.12",
27773
- "unocss-preset-vuetify": "^0.1.1",
27756
+ "unocss-preset-vuetify": "^0.2.1",
27774
27757
  "tailwindcss": "^4.1.18",
27758
+ "@tailwindcss/postcss": "^4.1.18",
27775
27759
  "@tailwindcss/vite": "^4.1.18",
27776
- "@nuxtjs/tailwindcss": "^7.0.0-beta.1",
27777
27760
  "pathe": "^2.0.3",
27778
27761
  "@vuetify/loader-shared": "^2.1.1",
27779
27762
  "@intellectronica/ruler": "^0.3.18",
@@ -27982,6 +27965,37 @@ const mcp = {
27982
27965
  }
27983
27966
  };
27984
27967
 
27968
+ //#endregion
27969
+ //#region ../shared/src/features/client-hints.ts
27970
+ const nuxtClientHints = {
27971
+ name: "client-hints",
27972
+ apply: async ({ cwd, isNuxt }) => {
27973
+ if (!isNuxt) return;
27974
+ const configPath = join$1(cwd, "nuxt.config.ts");
27975
+ const mod = await loadFile(configPath);
27976
+ const options = getDefaultExportOptions(mod);
27977
+ if (options) {
27978
+ options.vuetify ??= {};
27979
+ options.vuetify.moduleOptions ??= {};
27980
+ options.vuetify.moduleOptions.ssrClientHints = {
27981
+ reloadOnFirstRequest: false,
27982
+ viewportSize: true,
27983
+ prefersColorScheme: true,
27984
+ prefersReducedMotion: true,
27985
+ prefersColorSchemeOptions: { useBrowserThemeOnly: false }
27986
+ };
27987
+ options.vuetify.vuetifyOptions ??= {};
27988
+ options.vuetify.vuetifyOptions.theme ??= {};
27989
+ options.vuetify.vuetifyOptions.theme.defaultTheme = "dark";
27990
+ options.vuetify.vuetifyOptions.theme.themes = {
27991
+ light: {},
27992
+ dark: {}
27993
+ };
27994
+ }
27995
+ await writeFile(configPath, mod.generate().code);
27996
+ }
27997
+ };
27998
+
27985
27999
  //#endregion
27986
28000
  //#region ../shared/src/features/pinia.ts
27987
28001
  const pinia = {
@@ -28035,7 +28049,7 @@ export const useAppStore = defineStore('app', {
28035
28049
 
28036
28050
  //#endregion
28037
28051
  //#region ../shared/package.json
28038
- var version$1 = "1.0.2";
28052
+ var version$1 = "1.1.0";
28039
28053
 
28040
28054
  //#endregion
28041
28055
  //#region ../shared/src/utils/getTemplateSource.ts
@@ -28182,11 +28196,7 @@ const tailwindcss = {
28182
28196
  if (isNuxt) {
28183
28197
  pkg.devDependencies = pkg.devDependencies || {};
28184
28198
  pkg.devDependencies["tailwindcss"] = dependencies.tailwindcss;
28185
- pkg.devDependencies["@nuxtjs/tailwindcss"] = dependencies["@nuxtjs/tailwindcss"];
28186
- const configPath = join$1(cwd, "nuxt.config.ts");
28187
- const mod = await loadFile(configPath);
28188
- addNuxtModule(mod, "@nuxtjs/tailwindcss");
28189
- await writeFile(configPath, mod.generate().code);
28199
+ pkg.devDependencies["@tailwindcss/postcss"] = dependencies["@tailwindcss/postcss"];
28190
28200
  } else {
28191
28201
  pkg.devDependencies = pkg.devDependencies || {};
28192
28202
  pkg.devDependencies["tailwindcss"] = dependencies.tailwindcss;
@@ -28221,7 +28231,7 @@ async function applyUnocssBase({ cwd, pkg, isTypescript, isNuxt }, options = {})
28221
28231
  if (pkg.devDependencies) {
28222
28232
  delete pkg.devDependencies["tailwindcss"];
28223
28233
  delete pkg.devDependencies["@tailwindcss/vite"];
28224
- delete pkg.devDependencies["@nuxtjs/tailwindcss"];
28234
+ delete pkg.devDependencies["@tailwindcss/postcss"];
28225
28235
  }
28226
28236
  if (isNuxt) {
28227
28237
  pkg.devDependencies["@unocss/nuxt"] = dependencies["@unocss/nuxt"];
@@ -28265,68 +28275,6 @@ const unocssVuetify = {
28265
28275
  }
28266
28276
  };
28267
28277
 
28268
- //#endregion
28269
- //#region ../shared/src/features/vuetify-nuxt-manual.ts
28270
- const vuetifyNuxtManual = {
28271
- name: "vuetify-nuxt-manual",
28272
- apply: async ({ cwd, pkg, isNuxt }) => {
28273
- if (!isNuxt) return;
28274
- const configPath = join$1(cwd, "nuxt.config.ts");
28275
- pkg.devDependencies = pkg.devDependencies || {};
28276
- pkg.devDependencies["vite-plugin-vuetify"] = dependencies["vite-plugin-vuetify"];
28277
- pkg.devDependencies["@vuetify/loader-shared"] = dependencies["@vuetify/loader-shared"];
28278
- pkg.devDependencies["pathe"] = dependencies.pathe;
28279
- const mod = await loadFile(configPath);
28280
- mod.imports.$prepend({
28281
- from: "vite-plugin-vuetify",
28282
- imported: "transformAssetUrls"
28283
- });
28284
- const options = getDefaultExportOptions(mod);
28285
- if (options) {
28286
- options.build ||= {};
28287
- options.build.transpile ||= [];
28288
- if (!options.build.transpile.includes("vuetify")) options.build.transpile.push("vuetify");
28289
- options.vite ||= {};
28290
- options.vite.vue ||= {};
28291
- options.vite.vue.template ||= {};
28292
- options.vite.vue.template.transformAssetUrls = builders.raw("transformAssetUrls");
28293
- }
28294
- await writeFile(configPath, mod.generate().code);
28295
- }
28296
- };
28297
-
28298
- //#endregion
28299
- //#region ../shared/src/features/vuetify-nuxt-module.ts
28300
- const vuetifyNuxtModule = {
28301
- name: "vuetify-nuxt-module",
28302
- apply: async ({ cwd, pkg, clientHints, isNuxt }) => {
28303
- if (!isNuxt) return;
28304
- pkg.dependencies = pkg.dependencies || {};
28305
- pkg.dependencies["vuetify-nuxt-module"] = dependencies["vuetify-nuxt-module"];
28306
- const configPath = join$1(cwd, "nuxt.config.ts");
28307
- const mod = await loadFile(configPath);
28308
- const manualModulePath = join$1(cwd, "modules/vuetify.ts");
28309
- if (existsSync(manualModulePath)) unlinkSync(manualModulePath);
28310
- const options = getDefaultExportOptions(mod);
28311
- if (options) {
28312
- options.modules ||= [];
28313
- options.modules.push("vuetify-nuxt-module");
28314
- options.vuetify = {
28315
- moduleOptions: {},
28316
- vuetifyOptions: {}
28317
- };
28318
- if (clientHints) options.vuetify.moduleOptions.ssrClientHints = {
28319
- reloadOnFirstRequest: false,
28320
- viewportSize: true,
28321
- prefersColorScheme: true,
28322
- prefersReducedMotion: true,
28323
- prefersColorSchemeOptions: { useBrowserThemeOnly: false }
28324
- };
28325
- }
28326
- await writeFile(configPath, mod.generate().code);
28327
- }
28328
- };
28329
-
28330
28278
  //#endregion
28331
28279
  //#region ../shared/src/features/index.ts
28332
28280
  const features = {
@@ -28336,15 +28284,14 @@ const features = {
28336
28284
  i18n,
28337
28285
  eslint,
28338
28286
  mcp,
28339
- "vuetify-nuxt-module": vuetifyNuxtModule,
28340
- "vuetify-nuxt-manual": vuetifyNuxtManual,
28287
+ "client-hints": nuxtClientHints,
28341
28288
  unocss,
28342
28289
  "unocss-wind4": unocssWind4,
28343
28290
  "unocss-vuetify": unocssVuetify,
28344
28291
  tailwindcss,
28345
28292
  "css-none": cssNone
28346
28293
  };
28347
- async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, clientHints, type) {
28294
+ async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, type) {
28348
28295
  for (const name of featureNames) {
28349
28296
  const feature = features[name];
28350
28297
  if (feature) await feature.apply({
@@ -28352,7 +28299,6 @@ async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, clien
28352
28299
  pkg,
28353
28300
  isTypescript,
28354
28301
  isNuxt,
28355
- clientHints,
28356
28302
  type
28357
28303
  });
28358
28304
  }
@@ -28719,10 +28665,10 @@ async function installDependencies(root = process.cwd(), manager = packageManage
28719
28665
  //#endregion
28720
28666
  //#region ../shared/src/functions/scaffold.ts
28721
28667
  function resolveTemplateName(templates, platform, type, features) {
28722
- if (platform !== "vue" || type !== "vuetify") return templates[platform][type];
28723
- if (features.includes("unocss-wind4")) return "vue/unocss-wind4";
28724
- if (features.includes("unocss-vuetify")) return "vue/unocss-vuetify";
28725
- if (features.includes("tailwindcss")) return "vue/tailwind";
28668
+ if (type !== "vuetify") return templates[platform][type];
28669
+ if (features.includes("unocss-wind4")) return `${platform}/unocss-wind4`;
28670
+ if (features.includes("unocss-vuetify")) return `${platform}/unocss-vuetify`;
28671
+ if (features.includes("tailwindcss")) return `${platform}/tailwind`;
28726
28672
  return templates[platform][type];
28727
28673
  }
28728
28674
  async function resolveSharedAssetsPath() {
@@ -28760,7 +28706,7 @@ async function applySharedAssets(projectRoot, platform, type) {
28760
28706
  try {
28761
28707
  if (needsFavicon) copySharedAsset(join$1(assets.path, "favicon.ico"), join$1(projectRoot, "public", "favicon.ico"));
28762
28708
  if (needsLogo) {
28763
- const logoRoot = platform === "nuxt" ? join$1(projectRoot, "assets") : join$1(projectRoot, "src", "assets");
28709
+ const logoRoot = platform === "nuxt" ? join$1(projectRoot, "app", "assets") : join$1(projectRoot, "src", "assets");
28764
28710
  copySharedAsset(join$1(assets.path, "logo.png"), join$1(logoRoot, "logo.png"));
28765
28711
  copySharedAsset(join$1(assets.path, "logo.svg"), join$1(logoRoot, "logo.svg"));
28766
28712
  }
@@ -28770,7 +28716,7 @@ async function applySharedAssets(projectRoot, platform, type) {
28770
28716
  }
28771
28717
  }
28772
28718
  async function scaffold(options, callbacks = {}) {
28773
- const { cwd, name, platform, features, typescript, type, packageManager, install, force, clientHints, debug: debugFlag } = options;
28719
+ const { cwd, name, platform, features, typescript, type, packageManager, install, force, debug: debugFlag } = options;
28774
28720
  const debug = (...msg) => debugFlag && console.log("DEBUG:", ...msg);
28775
28721
  const projectRoot = join$1(cwd, name);
28776
28722
  debug("projectRoot=", projectRoot);
@@ -28819,13 +28765,7 @@ async function scaffold(options, callbacks = {}) {
28819
28765
  let pkg;
28820
28766
  pkg = await readPackageJSON(join$1(projectRoot, "package.json"));
28821
28767
  callbacks.onConfigStart?.();
28822
- if (features && features.length > 0) await applyFeatures(projectRoot, features, pkg, !!typescript, platform === "nuxt", clientHints, type);
28823
- if (platform === "nuxt" && type !== "vuetify0" && (!features || !features.includes("vuetify-nuxt-module"))) await vuetifyNuxtManual.apply({
28824
- cwd: projectRoot,
28825
- pkg,
28826
- isTypescript: !!typescript,
28827
- isNuxt: true
28828
- });
28768
+ if (features && features.length > 0) await applyFeatures(projectRoot, features, pkg, !!typescript, platform === "nuxt", type);
28829
28769
  callbacks.onConfigEnd?.();
28830
28770
  const pkgPath = join$1(projectRoot, "package.json");
28831
28771
  if (existsSync(pkgPath)) {
@@ -28939,12 +28879,11 @@ async function createVuetify(options, commandOptions) {
28939
28879
  name: context.name,
28940
28880
  platform: context.platform,
28941
28881
  type: context.type,
28942
- features: context.features,
28882
+ features: [...context.features, ...context.clientHints ? ["client-hints"] : []],
28943
28883
  typescript: !!context.typescript,
28944
28884
  packageManager: context.packageManager,
28945
28885
  install: context.install,
28946
28886
  force: context.force,
28947
- clientHints: context.clientHints,
28948
28887
  debug: args.debug
28949
28888
  }, {
28950
28889
  onDownloadStart: (templateName) => {
@@ -31046,7 +30985,7 @@ const blue = ansi256(33);
31046
30985
 
31047
30986
  //#endregion
31048
30987
  //#region package.json
31049
- var version = "1.0.2";
30988
+ var version = "1.1.0";
31050
30989
 
31051
30990
  //#endregion
31052
30991
  //#region src/commands/upgrade.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-vuetify0",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "Create a new Vuetify project",
5
5
  "type": "module",
6
6
  "files": [
@@ -36,7 +36,7 @@
36
36
  "nypm": "^0.6.5",
37
37
  "pathe": "^2.0.3",
38
38
  "tsdown": "^0.20.3",
39
- "@vuetify/cli-shared": "1.0.2"
39
+ "@vuetify/cli-shared": "1.1.0"
40
40
  },
41
41
  "exports": {
42
42
  ".": "./dist/index.mjs",