create-vuetify0 1.0.3 → 1.1.1

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 +80 -142
  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"
@@ -10383,7 +10369,7 @@ function projectArgs(options) {
10383
10369
  css: {
10384
10370
  type: "string",
10385
10371
  description: i18n$1.t("args.css.description"),
10386
- valueHint: "unocss | tailwindcss | none"
10372
+ valueHint: "unocss | unocss-wind4 | unocss-vuetify | tailwindcss | none"
10387
10373
  },
10388
10374
  packageManager: {
10389
10375
  type: "string",
@@ -27250,23 +27236,34 @@ async function prompt(args, cwd = process.cwd()) {
27250
27236
  css: ({ results }) => {
27251
27237
  const type = results.type || args.type;
27252
27238
  const platform = results.platform || args.platform;
27253
- if (args.css) if (type === "vuetify" && args.css.startsWith("unocss")) R.warn(i18n$1.t("prompts.css_framework.status.not_supported", {
27254
- css: "UnoCSS",
27255
- vuetify: "Vuetify"
27256
- }));
27257
- else return Promise.resolve(args.css);
27239
+ if (args.css) {
27240
+ if (type === "vuetify" && args.css === "unocss") return Promise.resolve("unocss-vuetify");
27241
+ if (type === "vuetify0" && args.css.startsWith("unocss-")) R.warn("v0 supports only --css with \"unocss | tailwindcss | none\", fallback to \"unocss\"");
27242
+ return Promise.resolve(args.css);
27243
+ }
27258
27244
  if (!args.interactive) return Promise.resolve("none");
27259
27245
  if (type === "vuetify" && platform === "nuxt") return qt({
27260
27246
  message: i18n$1.t("prompts.css_framework.select"),
27261
27247
  initialValue: "none",
27262
- options: [{
27263
- label: "Tailwind CSS",
27264
- value: "tailwindcss",
27265
- hint: i18n$1.t("prompts.css_framework.tailwindcss.hint")
27266
- }, {
27267
- label: i18n$1.t("prompts.css_framework.none"),
27268
- value: "none"
27269
- }]
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
+ ]
27270
27267
  });
27271
27268
  return qt({
27272
27269
  message: i18n$1.t("prompts.css_framework.select"),
@@ -27298,15 +27295,11 @@ async function prompt(args, cwd = process.cwd()) {
27298
27295
  },
27299
27296
  {
27300
27297
  label: i18n$1.t("prompts.css_framework.unocss_wind4.label"),
27301
- disabled: true,
27302
- value: "unocss-wind4",
27303
- hint: i18n$1.t("prompts.css_framework.unocss_wind4.hint")
27298
+ value: "unocss-wind4"
27304
27299
  },
27305
27300
  {
27306
27301
  label: i18n$1.t("prompts.css_framework.unocss_vuetify.label"),
27307
- disabled: true,
27308
- value: "unocss-vuetify",
27309
- hint: i18n$1.t("prompts.css_framework.unocss_vuetify.hint")
27302
+ value: "unocss-vuetify"
27310
27303
  }
27311
27304
  ]
27312
27305
  });
@@ -27322,7 +27315,7 @@ async function prompt(args, cwd = process.cwd()) {
27322
27315
  if (args.features) return Promise.resolve(args.features);
27323
27316
  if (!args.interactive) return Promise.resolve([]);
27324
27317
  const platform = results.platform || args.platform;
27325
- const type = results.type || args.type;
27318
+ results.type || args.type;
27326
27319
  return platform === "vue" ? Lt({
27327
27320
  message: i18n$1.t("prompts.features.select", { hint: dim("↑/↓ to navigate, space to select, a to toggle all, enter to confirm") }),
27328
27321
  options: [
@@ -27360,11 +27353,6 @@ async function prompt(args, cwd = process.cwd()) {
27360
27353
  value: "eslint",
27361
27354
  hint: i18n$1.t("prompts.features.eslint.hint")
27362
27355
  },
27363
- ...type === "vuetify0" ? [] : [{
27364
- label: i18n$1.t("prompts.features.vuetify_nuxt_module.label"),
27365
- value: "vuetify-nuxt-module",
27366
- hint: i18n$1.t("prompts.features.vuetify_nuxt_module.hint")
27367
- }],
27368
27356
  {
27369
27357
  label: i18n$1.t("prompts.features.mcp.label"),
27370
27358
  value: "mcp",
@@ -27379,11 +27367,7 @@ async function prompt(args, cwd = process.cwd()) {
27379
27367
  value: "i18n"
27380
27368
  }
27381
27369
  ],
27382
- initialValues: [
27383
- "eslint",
27384
- ...type === "vuetify0" ? [] : ["vuetify-nuxt-module"],
27385
- "mcp"
27386
- ],
27370
+ initialValues: ["eslint", "mcp"],
27387
27371
  required: false
27388
27372
  });
27389
27373
  },
@@ -27416,9 +27400,7 @@ async function prompt(args, cwd = process.cwd()) {
27416
27400
  clientHints: ({ results }) => {
27417
27401
  if (args.clientHints !== void 0) return Promise.resolve(args.clientHints);
27418
27402
  if (!args.interactive) return Promise.resolve(false);
27419
- const platform = results.platform || args.platform;
27420
- const features = results.features || args.features || [];
27421
- if (platform === "nuxt" && features.includes("vuetify-nuxt-module")) return Mt({
27403
+ if ((results.platform || args.platform) === "nuxt") return Mt({
27422
27404
  message: i18n$1.t("prompts.client_hints.enable"),
27423
27405
  initialValue: false
27424
27406
  });
@@ -27771,10 +27753,10 @@ var dependencies = {
27771
27753
  "unocss": "^66.5.12",
27772
27754
  "@unocss/transformer-directives": "^66.6.0",
27773
27755
  "@unocss/nuxt": "^66.5.12",
27774
- "unocss-preset-vuetify": "^0.1.1",
27756
+ "unocss-preset-vuetify": "^0.2.1",
27775
27757
  "tailwindcss": "^4.1.18",
27758
+ "@tailwindcss/postcss": "^4.1.18",
27776
27759
  "@tailwindcss/vite": "^4.1.18",
27777
- "@nuxtjs/tailwindcss": "^7.0.0-beta.1",
27778
27760
  "pathe": "^2.0.3",
27779
27761
  "@vuetify/loader-shared": "^2.1.1",
27780
27762
  "@intellectronica/ruler": "^0.3.18",
@@ -27983,6 +27965,37 @@ const mcp = {
27983
27965
  }
27984
27966
  };
27985
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
+
27986
27999
  //#endregion
27987
28000
  //#region ../shared/src/features/pinia.ts
27988
28001
  const pinia = {
@@ -28036,7 +28049,7 @@ export const useAppStore = defineStore('app', {
28036
28049
 
28037
28050
  //#endregion
28038
28051
  //#region ../shared/package.json
28039
- var version$1 = "1.0.3";
28052
+ var version$1 = "1.1.1";
28040
28053
 
28041
28054
  //#endregion
28042
28055
  //#region ../shared/src/utils/getTemplateSource.ts
@@ -28183,11 +28196,7 @@ const tailwindcss = {
28183
28196
  if (isNuxt) {
28184
28197
  pkg.devDependencies = pkg.devDependencies || {};
28185
28198
  pkg.devDependencies["tailwindcss"] = dependencies.tailwindcss;
28186
- pkg.devDependencies["@nuxtjs/tailwindcss"] = dependencies["@nuxtjs/tailwindcss"];
28187
- const configPath = join$1(cwd, "nuxt.config.ts");
28188
- const mod = await loadFile(configPath);
28189
- addNuxtModule(mod, "@nuxtjs/tailwindcss");
28190
- await writeFile(configPath, mod.generate().code);
28199
+ pkg.devDependencies["@tailwindcss/postcss"] = dependencies["@tailwindcss/postcss"];
28191
28200
  } else {
28192
28201
  pkg.devDependencies = pkg.devDependencies || {};
28193
28202
  pkg.devDependencies["tailwindcss"] = dependencies.tailwindcss;
@@ -28222,7 +28231,7 @@ async function applyUnocssBase({ cwd, pkg, isTypescript, isNuxt }, options = {})
28222
28231
  if (pkg.devDependencies) {
28223
28232
  delete pkg.devDependencies["tailwindcss"];
28224
28233
  delete pkg.devDependencies["@tailwindcss/vite"];
28225
- delete pkg.devDependencies["@nuxtjs/tailwindcss"];
28234
+ delete pkg.devDependencies["@tailwindcss/postcss"];
28226
28235
  }
28227
28236
  if (isNuxt) {
28228
28237
  pkg.devDependencies["@unocss/nuxt"] = dependencies["@unocss/nuxt"];
@@ -28266,68 +28275,6 @@ const unocssVuetify = {
28266
28275
  }
28267
28276
  };
28268
28277
 
28269
- //#endregion
28270
- //#region ../shared/src/features/vuetify-nuxt-manual.ts
28271
- const vuetifyNuxtManual = {
28272
- name: "vuetify-nuxt-manual",
28273
- apply: async ({ cwd, pkg, isNuxt }) => {
28274
- if (!isNuxt) return;
28275
- const configPath = join$1(cwd, "nuxt.config.ts");
28276
- pkg.devDependencies = pkg.devDependencies || {};
28277
- pkg.devDependencies["vite-plugin-vuetify"] = dependencies["vite-plugin-vuetify"];
28278
- pkg.devDependencies["@vuetify/loader-shared"] = dependencies["@vuetify/loader-shared"];
28279
- pkg.devDependencies["pathe"] = dependencies.pathe;
28280
- const mod = await loadFile(configPath);
28281
- mod.imports.$prepend({
28282
- from: "vite-plugin-vuetify",
28283
- imported: "transformAssetUrls"
28284
- });
28285
- const options = getDefaultExportOptions(mod);
28286
- if (options) {
28287
- options.build ||= {};
28288
- options.build.transpile ||= [];
28289
- if (!options.build.transpile.includes("vuetify")) options.build.transpile.push("vuetify");
28290
- options.vite ||= {};
28291
- options.vite.vue ||= {};
28292
- options.vite.vue.template ||= {};
28293
- options.vite.vue.template.transformAssetUrls = builders.raw("transformAssetUrls");
28294
- }
28295
- await writeFile(configPath, mod.generate().code);
28296
- }
28297
- };
28298
-
28299
- //#endregion
28300
- //#region ../shared/src/features/vuetify-nuxt-module.ts
28301
- const vuetifyNuxtModule = {
28302
- name: "vuetify-nuxt-module",
28303
- apply: async ({ cwd, pkg, clientHints, isNuxt }) => {
28304
- if (!isNuxt) return;
28305
- pkg.dependencies = pkg.dependencies || {};
28306
- pkg.dependencies["vuetify-nuxt-module"] = dependencies["vuetify-nuxt-module"];
28307
- const configPath = join$1(cwd, "nuxt.config.ts");
28308
- const mod = await loadFile(configPath);
28309
- const manualModulePath = join$1(cwd, "modules/vuetify.ts");
28310
- if (existsSync(manualModulePath)) unlinkSync(manualModulePath);
28311
- const options = getDefaultExportOptions(mod);
28312
- if (options) {
28313
- options.modules ||= [];
28314
- options.modules.push("vuetify-nuxt-module");
28315
- options.vuetify = {
28316
- moduleOptions: {},
28317
- vuetifyOptions: {}
28318
- };
28319
- if (clientHints) options.vuetify.moduleOptions.ssrClientHints = {
28320
- reloadOnFirstRequest: false,
28321
- viewportSize: true,
28322
- prefersColorScheme: true,
28323
- prefersReducedMotion: true,
28324
- prefersColorSchemeOptions: { useBrowserThemeOnly: false }
28325
- };
28326
- }
28327
- await writeFile(configPath, mod.generate().code);
28328
- }
28329
- };
28330
-
28331
28278
  //#endregion
28332
28279
  //#region ../shared/src/features/index.ts
28333
28280
  const features = {
@@ -28337,15 +28284,14 @@ const features = {
28337
28284
  i18n,
28338
28285
  eslint,
28339
28286
  mcp,
28340
- "vuetify-nuxt-module": vuetifyNuxtModule,
28341
- "vuetify-nuxt-manual": vuetifyNuxtManual,
28287
+ "client-hints": nuxtClientHints,
28342
28288
  unocss,
28343
28289
  "unocss-wind4": unocssWind4,
28344
28290
  "unocss-vuetify": unocssVuetify,
28345
28291
  tailwindcss,
28346
28292
  "css-none": cssNone
28347
28293
  };
28348
- async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, clientHints, type) {
28294
+ async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, type) {
28349
28295
  for (const name of featureNames) {
28350
28296
  const feature = features[name];
28351
28297
  if (feature) await feature.apply({
@@ -28353,7 +28299,6 @@ async function applyFeatures(cwd, featureNames, pkg, isTypescript, isNuxt, clien
28353
28299
  pkg,
28354
28300
  isTypescript,
28355
28301
  isNuxt,
28356
- clientHints,
28357
28302
  type
28358
28303
  });
28359
28304
  }
@@ -28720,10 +28665,10 @@ async function installDependencies(root = process.cwd(), manager = packageManage
28720
28665
  //#endregion
28721
28666
  //#region ../shared/src/functions/scaffold.ts
28722
28667
  function resolveTemplateName(templates, platform, type, features) {
28723
- if (platform !== "vue" || type !== "vuetify") return templates[platform][type];
28724
- if (features.includes("unocss-wind4")) return "vue/unocss-wind4";
28725
- if (features.includes("unocss-vuetify")) return "vue/unocss-vuetify";
28726
- 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`;
28727
28672
  return templates[platform][type];
28728
28673
  }
28729
28674
  async function resolveSharedAssetsPath() {
@@ -28761,7 +28706,7 @@ async function applySharedAssets(projectRoot, platform, type) {
28761
28706
  try {
28762
28707
  if (needsFavicon) copySharedAsset(join$1(assets.path, "favicon.ico"), join$1(projectRoot, "public", "favicon.ico"));
28763
28708
  if (needsLogo) {
28764
- 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");
28765
28710
  copySharedAsset(join$1(assets.path, "logo.png"), join$1(logoRoot, "logo.png"));
28766
28711
  copySharedAsset(join$1(assets.path, "logo.svg"), join$1(logoRoot, "logo.svg"));
28767
28712
  }
@@ -28771,7 +28716,7 @@ async function applySharedAssets(projectRoot, platform, type) {
28771
28716
  }
28772
28717
  }
28773
28718
  async function scaffold(options, callbacks = {}) {
28774
- 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;
28775
28720
  const debug = (...msg) => debugFlag && console.log("DEBUG:", ...msg);
28776
28721
  const projectRoot = join$1(cwd, name);
28777
28722
  debug("projectRoot=", projectRoot);
@@ -28820,13 +28765,7 @@ async function scaffold(options, callbacks = {}) {
28820
28765
  let pkg;
28821
28766
  pkg = await readPackageJSON(join$1(projectRoot, "package.json"));
28822
28767
  callbacks.onConfigStart?.();
28823
- if (features && features.length > 0) await applyFeatures(projectRoot, features, pkg, !!typescript, platform === "nuxt", clientHints, type);
28824
- if (platform === "nuxt" && type !== "vuetify0" && (!features || !features.includes("vuetify-nuxt-module"))) await vuetifyNuxtManual.apply({
28825
- cwd: projectRoot,
28826
- pkg,
28827
- isTypescript: !!typescript,
28828
- isNuxt: true
28829
- });
28768
+ if (features && features.length > 0) await applyFeatures(projectRoot, features, pkg, !!typescript, platform === "nuxt", type);
28830
28769
  callbacks.onConfigEnd?.();
28831
28770
  const pkgPath = join$1(projectRoot, "package.json");
28832
28771
  if (existsSync(pkgPath)) {
@@ -28940,12 +28879,11 @@ async function createVuetify(options, commandOptions) {
28940
28879
  name: context.name,
28941
28880
  platform: context.platform,
28942
28881
  type: context.type,
28943
- features: context.features,
28882
+ features: [...context.features, ...context.clientHints ? ["client-hints"] : []],
28944
28883
  typescript: !!context.typescript,
28945
28884
  packageManager: context.packageManager,
28946
28885
  install: context.install,
28947
28886
  force: context.force,
28948
- clientHints: context.clientHints,
28949
28887
  debug: args.debug
28950
28888
  }, {
28951
28889
  onDownloadStart: (templateName) => {
@@ -31047,7 +30985,7 @@ const blue = ansi256(33);
31047
30985
 
31048
30986
  //#endregion
31049
30987
  //#region package.json
31050
- var version = "1.0.3";
30988
+ var version = "1.1.1";
31051
30989
 
31052
30990
  //#endregion
31053
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.3",
3
+ "version": "1.1.1",
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.3"
39
+ "@vuetify/cli-shared": "1.1.1"
40
40
  },
41
41
  "exports": {
42
42
  ".": "./dist/index.mjs",