create-vuetify 0.0.6-beta.4 → 0.0.6-beta.6
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.
- package/dist/index.mjs +76 -14
- package/package.json +2 -2
- package/src/features/dependencies/package.json +2 -1
- package/src/features/index.ts +2 -0
- package/src/features/mcp.ts +45 -0
- package/src/prompts.ts +6 -4
package/dist/index.mjs
CHANGED
|
@@ -10182,6 +10182,10 @@ var en_default = {
|
|
|
10182
10182
|
"vuetify_nuxt_module": {
|
|
10183
10183
|
"label": "Vuetify Nuxt Module",
|
|
10184
10184
|
"hint": "Use vuetify-nuxt-module instead of local plugin"
|
|
10185
|
+
},
|
|
10186
|
+
"mcp": {
|
|
10187
|
+
"label": "MCP",
|
|
10188
|
+
"hint": "Use official MCP Vuetify integration"
|
|
10185
10189
|
}
|
|
10186
10190
|
},
|
|
10187
10191
|
"client_hints": { "enable": "Enable Client Hints? (Requires SSR)" },
|
|
@@ -10363,6 +10367,10 @@ var ru_default = {
|
|
|
10363
10367
|
"vuetify_nuxt_module": {
|
|
10364
10368
|
"label": "Vuetify Nuxt Module",
|
|
10365
10369
|
"hint": "Использовать vuetify-nuxt-module вместо локального плагина"
|
|
10370
|
+
},
|
|
10371
|
+
"mcp": {
|
|
10372
|
+
"label": "MCP",
|
|
10373
|
+
"hint": "Добавить официальный MCP Vuetify сервер"
|
|
10366
10374
|
}
|
|
10367
10375
|
},
|
|
10368
10376
|
"package_manager": { "select": "Какой менеджер пакетов вы хотите использовать?" },
|
|
@@ -28403,7 +28411,7 @@ const banner = createBanner();
|
|
|
28403
28411
|
|
|
28404
28412
|
//#endregion
|
|
28405
28413
|
//#region package.json
|
|
28406
|
-
var version = "0.0.6-beta.
|
|
28414
|
+
var version = "0.0.6-beta.6";
|
|
28407
28415
|
|
|
28408
28416
|
//#endregion
|
|
28409
28417
|
//#region src/commands/upgrade.ts
|
|
@@ -28424,7 +28432,8 @@ var dependencies = {
|
|
|
28424
28432
|
"unplugin-vue-router": "^0.19.1",
|
|
28425
28433
|
"vite-plugin-vuetify": "^2.1.2",
|
|
28426
28434
|
"pathe": "^2.0.3",
|
|
28427
|
-
"@vuetify/loader-shared": "^2.1.1"
|
|
28435
|
+
"@vuetify/loader-shared": "^2.1.1",
|
|
28436
|
+
"@intellectronica/ruler": "^0.3.18"
|
|
28428
28437
|
};
|
|
28429
28438
|
|
|
28430
28439
|
//#endregion
|
|
@@ -28560,6 +28569,44 @@ function getNuxtI18nConfig(_ts) {
|
|
|
28560
28569
|
`;
|
|
28561
28570
|
}
|
|
28562
28571
|
|
|
28572
|
+
//#endregion
|
|
28573
|
+
//#region src/features/mcp.ts
|
|
28574
|
+
const mcp = {
|
|
28575
|
+
name: "mcp",
|
|
28576
|
+
apply: async ({ cwd: cwd$1, pkg }) => {
|
|
28577
|
+
pkg.devDependencies = pkg.devDependencies || {};
|
|
28578
|
+
pkg.devDependencies["@intellectronica/ruler"] = dependencies["@intellectronica/ruler"];
|
|
28579
|
+
pkg.scripts = pkg.scripts || {};
|
|
28580
|
+
pkg.scripts["mcp"] = "ruler apply";
|
|
28581
|
+
pkg.scripts["mcp:revert"] = "ruler revert";
|
|
28582
|
+
const rulerDir = join(cwd$1, ".ruler");
|
|
28583
|
+
await mkdir(rulerDir, { recursive: true });
|
|
28584
|
+
await writeFile(join(rulerDir, "ruler.toml"), getRulerToml());
|
|
28585
|
+
await writeFile(join(rulerDir, "AGENTS.md"), getAgentsMd());
|
|
28586
|
+
}
|
|
28587
|
+
};
|
|
28588
|
+
function getRulerToml() {
|
|
28589
|
+
return `# For a complete example, see: https://okigu.com/ruler#complete-example
|
|
28590
|
+
|
|
28591
|
+
# List of agents to configure
|
|
28592
|
+
default_agents = ["copilot", "claude", "trae"]
|
|
28593
|
+
|
|
28594
|
+
[mcp_servers.vuetify]
|
|
28595
|
+
url = "https://mcp.vuetifyjs.com/mcp"
|
|
28596
|
+
|
|
28597
|
+
# https://github.com/vuetifyjs/mcp#authentication
|
|
28598
|
+
# [mcp_servers.vuetify.headers]
|
|
28599
|
+
# Authorization = "Bearer <YOUR_API_KEY>"
|
|
28600
|
+
`;
|
|
28601
|
+
}
|
|
28602
|
+
function getAgentsMd() {
|
|
28603
|
+
return `# Project Rules
|
|
28604
|
+
|
|
28605
|
+
## General
|
|
28606
|
+
- Follow the existing code style and patterns.
|
|
28607
|
+
`;
|
|
28608
|
+
}
|
|
28609
|
+
|
|
28563
28610
|
//#endregion
|
|
28564
28611
|
//#region src/features/pinia.ts
|
|
28565
28612
|
const pinia = {
|
|
@@ -28774,6 +28821,7 @@ const features = {
|
|
|
28774
28821
|
pinia,
|
|
28775
28822
|
i18n: i18n$1,
|
|
28776
28823
|
eslint,
|
|
28824
|
+
mcp,
|
|
28777
28825
|
"vuetify-nuxt-module": vuetifyNuxtModule
|
|
28778
28826
|
};
|
|
28779
28827
|
async function applyFeatures(cwd$1, featureNames, pkg, isTypescript, clientHints) {
|
|
@@ -28902,32 +28950,32 @@ async function prompt(args$2, cwd$1 = process.cwd()) {
|
|
|
28902
28950
|
return (results.type || args$2.type) === "vue" ? Lt({
|
|
28903
28951
|
message: i18n.t("prompts.features.select", { hint: dim("↑/↓ to navigate, space to select, a to toggle all, enter to confirm") }),
|
|
28904
28952
|
options: [
|
|
28905
|
-
{
|
|
28906
|
-
label: i18n.t("prompts.features.pinia.label"),
|
|
28907
|
-
value: "pinia",
|
|
28908
|
-
hint: i18n.t("prompts.features.pinia.hint")
|
|
28909
|
-
},
|
|
28910
28953
|
{
|
|
28911
28954
|
label: i18n.t("prompts.features.eslint.label"),
|
|
28912
28955
|
value: "eslint",
|
|
28913
28956
|
hint: i18n.t("prompts.features.eslint.hint")
|
|
28914
28957
|
},
|
|
28958
|
+
{
|
|
28959
|
+
label: i18n.t("prompts.features.mcp.label"),
|
|
28960
|
+
value: "mcp",
|
|
28961
|
+
hint: i18n.t("prompts.features.mcp.hint")
|
|
28962
|
+
},
|
|
28963
|
+
{
|
|
28964
|
+
label: i18n.t("prompts.features.pinia.label"),
|
|
28965
|
+
value: "pinia",
|
|
28966
|
+
hint: i18n.t("prompts.features.pinia.hint")
|
|
28967
|
+
},
|
|
28915
28968
|
{
|
|
28916
28969
|
label: i18n.t("prompts.features.i18n.label"),
|
|
28917
28970
|
value: "i18n",
|
|
28918
28971
|
hint: i18n.t("prompts.features.i18n.hint")
|
|
28919
28972
|
}
|
|
28920
28973
|
],
|
|
28921
|
-
initialValues: ["eslint"],
|
|
28974
|
+
initialValues: ["eslint", "mcp"],
|
|
28922
28975
|
required: false
|
|
28923
28976
|
}) : Lt({
|
|
28924
28977
|
message: i18n.t("prompts.features.select", { hint: dim("↑/↓ to navigate, space to select, a to toggle all, enter to confirm") }),
|
|
28925
28978
|
options: [
|
|
28926
|
-
{
|
|
28927
|
-
label: i18n.t("prompts.features.pinia.label"),
|
|
28928
|
-
value: "pinia",
|
|
28929
|
-
hint: i18n.t("prompts.features.pinia.hint")
|
|
28930
|
-
},
|
|
28931
28979
|
{
|
|
28932
28980
|
label: i18n.t("prompts.features.eslint.label"),
|
|
28933
28981
|
value: "eslint",
|
|
@@ -28938,13 +28986,27 @@ async function prompt(args$2, cwd$1 = process.cwd()) {
|
|
|
28938
28986
|
value: "vuetify-nuxt-module",
|
|
28939
28987
|
hint: i18n.t("prompts.features.vuetify_nuxt_module.hint")
|
|
28940
28988
|
},
|
|
28989
|
+
{
|
|
28990
|
+
label: i18n.t("prompts.features.mcp.label"),
|
|
28991
|
+
value: "mcp",
|
|
28992
|
+
hint: i18n.t("prompts.features.mcp.hint")
|
|
28993
|
+
},
|
|
28994
|
+
{
|
|
28995
|
+
label: i18n.t("prompts.features.pinia.label"),
|
|
28996
|
+
value: "pinia",
|
|
28997
|
+
hint: i18n.t("prompts.features.pinia.hint")
|
|
28998
|
+
},
|
|
28941
28999
|
{
|
|
28942
29000
|
label: i18n.t("prompts.features.i18n.label"),
|
|
28943
29001
|
value: "i18n",
|
|
28944
29002
|
hint: i18n.t("prompts.features.i18n.hint")
|
|
28945
29003
|
}
|
|
28946
29004
|
],
|
|
28947
|
-
initialValues: [
|
|
29005
|
+
initialValues: [
|
|
29006
|
+
"eslint",
|
|
29007
|
+
"vuetify-nuxt-module",
|
|
29008
|
+
"mcp"
|
|
29009
|
+
],
|
|
28948
29010
|
required: false
|
|
28949
29011
|
});
|
|
28950
29012
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-vuetify",
|
|
3
|
-
"version": "0.0.6-beta.
|
|
3
|
+
"version": "0.0.6-beta.6",
|
|
4
4
|
"description": "Create a new Vuetify project",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"pathe": "^2.0.3",
|
|
20
20
|
"tsdown": "^0.16.6",
|
|
21
21
|
"vitest": "^4.0.16",
|
|
22
|
-
"@vuetify/cli-shared": "0.0.6-beta.
|
|
22
|
+
"@vuetify/cli-shared": "0.0.6-beta.6"
|
|
23
23
|
},
|
|
24
24
|
"main": "./dist/index.mjs",
|
|
25
25
|
"module": "./dist/index.mjs",
|
package/src/features/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { PackageJson } from 'pkg-types'
|
|
|
2
2
|
import type { Feature } from './types'
|
|
3
3
|
import { eslint } from './eslint'
|
|
4
4
|
import { i18n } from './i18n'
|
|
5
|
+
import { mcp } from './mcp'
|
|
5
6
|
import { pinia } from './pinia'
|
|
6
7
|
import { fileRouter, router } from './router'
|
|
7
8
|
import { vuetifyNuxtModule } from './vuetify-nuxt-module'
|
|
@@ -12,6 +13,7 @@ export const features: Record<string, Feature> = {
|
|
|
12
13
|
pinia,
|
|
13
14
|
i18n,
|
|
14
15
|
eslint,
|
|
16
|
+
mcp,
|
|
15
17
|
'vuetify-nuxt-module': vuetifyNuxtModule,
|
|
16
18
|
}
|
|
17
19
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Feature } from './types'
|
|
2
|
+
import { mkdir, writeFile } from 'node:fs/promises'
|
|
3
|
+
import { join } from 'node:path'
|
|
4
|
+
import rootPkg from './dependencies/package.json' with { type: 'json' }
|
|
5
|
+
|
|
6
|
+
export const mcp: Feature = {
|
|
7
|
+
name: 'mcp',
|
|
8
|
+
apply: async ({ cwd, pkg }) => {
|
|
9
|
+
pkg.devDependencies = pkg.devDependencies || {}
|
|
10
|
+
pkg.devDependencies['@intellectronica/ruler'] = rootPkg.dependencies['@intellectronica/ruler']
|
|
11
|
+
|
|
12
|
+
pkg.scripts = pkg.scripts || {}
|
|
13
|
+
pkg.scripts['mcp'] = 'ruler apply'
|
|
14
|
+
pkg.scripts['mcp:revert'] = 'ruler revert'
|
|
15
|
+
|
|
16
|
+
const rulerDir = join(cwd, '.ruler')
|
|
17
|
+
await mkdir(rulerDir, { recursive: true })
|
|
18
|
+
|
|
19
|
+
await writeFile(join(rulerDir, 'ruler.toml'), getRulerToml())
|
|
20
|
+
await writeFile(join(rulerDir, 'AGENTS.md'), getAgentsMd())
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function getRulerToml () {
|
|
25
|
+
return `# For a complete example, see: https://okigu.com/ruler#complete-example
|
|
26
|
+
|
|
27
|
+
# List of agents to configure
|
|
28
|
+
default_agents = ["copilot", "claude", "trae"]
|
|
29
|
+
|
|
30
|
+
[mcp_servers.vuetify]
|
|
31
|
+
url = "https://mcp.vuetifyjs.com/mcp"
|
|
32
|
+
|
|
33
|
+
# https://github.com/vuetifyjs/mcp#authentication
|
|
34
|
+
# [mcp_servers.vuetify.headers]
|
|
35
|
+
# Authorization = "Bearer <YOUR_API_KEY>"
|
|
36
|
+
`
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function getAgentsMd () {
|
|
40
|
+
return `# Project Rules
|
|
41
|
+
|
|
42
|
+
## General
|
|
43
|
+
- Follow the existing code style and patterns.
|
|
44
|
+
`
|
|
45
|
+
}
|
package/src/prompts.ts
CHANGED
|
@@ -116,22 +116,24 @@ export async function prompt (args: Partial<ProjectOptions>, cwd = process.cwd()
|
|
|
116
116
|
? multiselect({
|
|
117
117
|
message: i18n.t('prompts.features.select', { hint: dim('↑/↓ to navigate, space to select, a to toggle all, enter to confirm') }),
|
|
118
118
|
options: [
|
|
119
|
-
{ label: i18n.t('prompts.features.pinia.label'), value: 'pinia', hint: i18n.t('prompts.features.pinia.hint') },
|
|
120
119
|
{ label: i18n.t('prompts.features.eslint.label'), value: 'eslint', hint: i18n.t('prompts.features.eslint.hint') },
|
|
120
|
+
{ label: i18n.t('prompts.features.mcp.label'), value: 'mcp', hint: i18n.t('prompts.features.mcp.hint') },
|
|
121
|
+
{ label: i18n.t('prompts.features.pinia.label'), value: 'pinia', hint: i18n.t('prompts.features.pinia.hint') },
|
|
121
122
|
{ label: i18n.t('prompts.features.i18n.label'), value: 'i18n', hint: i18n.t('prompts.features.i18n.hint') },
|
|
122
123
|
],
|
|
123
|
-
initialValues: ['eslint'],
|
|
124
|
+
initialValues: ['eslint', 'mcp'],
|
|
124
125
|
required: false,
|
|
125
126
|
})
|
|
126
127
|
: multiselect({
|
|
127
128
|
message: i18n.t('prompts.features.select', { hint: dim('↑/↓ to navigate, space to select, a to toggle all, enter to confirm') }),
|
|
128
129
|
options: [
|
|
129
|
-
{ label: i18n.t('prompts.features.pinia.label'), value: 'pinia', hint: i18n.t('prompts.features.pinia.hint') },
|
|
130
130
|
{ label: i18n.t('prompts.features.eslint.label'), value: 'eslint', hint: i18n.t('prompts.features.eslint.hint') },
|
|
131
131
|
{ label: i18n.t('prompts.features.vuetify_nuxt_module.label'), value: 'vuetify-nuxt-module', hint: i18n.t('prompts.features.vuetify_nuxt_module.hint') },
|
|
132
|
+
{ label: i18n.t('prompts.features.mcp.label'), value: 'mcp', hint: i18n.t('prompts.features.mcp.hint') },
|
|
133
|
+
{ label: i18n.t('prompts.features.pinia.label'), value: 'pinia', hint: i18n.t('prompts.features.pinia.hint') },
|
|
132
134
|
{ label: i18n.t('prompts.features.i18n.label'), value: 'i18n', hint: i18n.t('prompts.features.i18n.hint') },
|
|
133
135
|
],
|
|
134
|
-
initialValues: ['eslint', 'vuetify-nuxt-module'],
|
|
136
|
+
initialValues: ['eslint', 'vuetify-nuxt-module', 'mcp'],
|
|
135
137
|
required: false,
|
|
136
138
|
})
|
|
137
139
|
},
|