create-quasar 2.0.12 → 2.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.
- package/index.js +72 -54
- package/package.json +15 -16
- package/scripts/create-test-project.ts +28 -25
- package/templates/{eslint.config.base.js → __eslint.config.base.js} +3 -2
- package/templates/app/{eslint.config.js → __eslint.config.js} +2 -2
- package/templates/app/create-quasar-script.js +8 -0
- package/templates/app/quasar-v2/{index.js → create-quasar-script.js} +22 -8
- package/templates/app/quasar-v2/js-vite-2/BASE/_package.json +16 -16
- package/templates/app/quasar-v2/js-vite-2/BASE/_pnpm-workspace.yaml +4 -0
- package/templates/app/quasar-v2/{ts-webpack-4/index.js → js-vite-2/create-quasar-script.js} +12 -3
- package/templates/app/quasar-v2/js-webpack-4/BASE/_package.json +9 -9
- package/templates/app/quasar-v2/js-webpack-4/BASE/_pnpm-workspace.yaml +4 -0
- package/templates/app/quasar-v2/{js-vite-2/index.js → js-webpack-4/create-quasar-script.js} +12 -3
- package/templates/app/quasar-v2/ts-vite-2/BASE/_package.json +19 -19
- package/templates/app/quasar-v2/ts-vite-2/BASE/_pnpm-workspace.yaml +4 -0
- package/templates/app/quasar-v2/ts-vite-2/{index.js → create-quasar-script.js} +12 -3
- package/templates/app/quasar-v2/ts-webpack-4/BASE/_package.json +11 -11
- package/templates/app/quasar-v2/ts-webpack-4/BASE/_pnpm-workspace.yaml +4 -0
- package/templates/app/quasar-v2/{js-webpack-4/index.js → ts-webpack-4/create-quasar-script.js} +12 -3
- package/templates/app-extension/{eslint.config.js → __eslint.config.js} +2 -2
- package/templates/app-extension/ae-js/{index.js → create-quasar-script.js} +9 -4
- package/templates/app-extension/ae-ts/BASE/_eslint.config.js +3 -2
- package/templates/app-extension/ae-ts/BASE/_package.json +4 -4
- package/templates/app-extension/ae-ts/BASE/app-extension/_package.json +1 -1
- package/templates/app-extension/ae-ts/BASE/playground/quasar-cli-vite/_package.json +1 -1
- package/templates/app-extension/ae-ts/BASE/playground/quasar-cli-vite/quasar.config.ts +0 -2
- package/templates/app-extension/ae-ts/BASE/playground/quasar-cli-webpack/_package.json +1 -1
- package/templates/app-extension/ae-ts/BASE/playground/quasar-cli-webpack/quasar.config.ts +0 -2
- package/templates/app-extension/ae-ts/{index.js → create-quasar-script.js} +11 -6
- package/templates/app-extension/create-quasar-script.js +16 -0
- package/templates/ui-kit/{eslint.config.js → __eslint.config.js} +2 -2
- package/templates/ui-kit/{index.js → create-quasar-script.js} +8 -5
- package/templates/ui-kit/quasar-v2/BASE/ui/_package.json +2 -2
- package/templates/ui-kit/quasar-v2/{index.js → create-quasar-script.js} +5 -2
- package/test-project/.editorconfig +7 -0
- package/test-project/.prettierrc.json +5 -0
- package/test-project/.vscode/extensions.json +15 -0
- package/test-project/.vscode/settings.json +9 -0
- package/test-project/README.md +43 -0
- package/test-project/eslint.config.js +83 -0
- package/test-project/index.html +24 -0
- package/test-project/package.json +45 -0
- package/test-project/pnpm-lock.yaml +5293 -0
- package/test-project/pnpm-workspace.yaml +6 -0
- package/test-project/postcss.config.js +29 -0
- package/test-project/public/favicon.ico +0 -0
- package/test-project/public/icons/favicon-128x128.png +0 -0
- package/test-project/public/icons/favicon-16x16.png +0 -0
- package/test-project/public/icons/favicon-32x32.png +0 -0
- package/test-project/public/icons/favicon-96x96.png +0 -0
- package/test-project/quasar.config.ts +217 -0
- package/test-project/src/App.vue +7 -0
- package/test-project/src/assets/quasar-logo-vertical.svg +15 -0
- package/test-project/src/boot/.gitkeep +0 -0
- package/test-project/src/components/EssentialLink.vue +27 -0
- package/test-project/src/components/ExampleComponent.vue +37 -0
- package/test-project/src/components/models.ts +8 -0
- package/test-project/src/css/app.scss +1 -0
- package/test-project/src/css/quasar.variables.scss +25 -0
- package/test-project/src/env.d.ts +7 -0
- package/test-project/src/layouts/MainLayout.vue +81 -0
- package/test-project/src/pages/ErrorNotFound.vue +23 -0
- package/test-project/src/pages/IndexPage.vue +43 -0
- package/test-project/src/router/index.ts +37 -0
- package/test-project/src/router/routes.ts +18 -0
- package/test-project/tsconfig.json +3 -0
- package/utils/index.js +123 -104
- package/utils/logger.js +52 -50
- package/eslint.config.base.js +0 -19
- package/eslint.config.js +0 -47
- package/templates/app/index.js +0 -8
- package/templates/app-extension/index.js +0 -15
- /package/templates/app/quasar-v2/js-vite-2/{.eslintrc.cjs → __.eslintrc.cjs} +0 -0
- /package/templates/app/quasar-v2/js-webpack-4/{.eslintrc.cjs → __.eslintrc.cjs} +0 -0
- /package/templates/app/quasar-v2/ts-vite-2/{.eslintrc.cjs → __.eslintrc.cjs} +0 -0
- /package/templates/app/quasar-v2/ts-webpack-4/{.eslintrc.cjs → __.eslintrc.cjs} +0 -0
package/index.js
CHANGED
|
@@ -5,12 +5,7 @@ import { join } from 'node:path'
|
|
|
5
5
|
|
|
6
6
|
// display banner
|
|
7
7
|
console.log()
|
|
8
|
-
console.log(
|
|
9
|
-
readFileSync(
|
|
10
|
-
new URL('./assets/logo.art', import.meta.url),
|
|
11
|
-
'utf8'
|
|
12
|
-
)
|
|
13
|
-
)
|
|
8
|
+
console.log(readFileSync(new URL('./assets/logo.art', import.meta.url), 'utf8'))
|
|
14
9
|
|
|
15
10
|
import utils from './utils/index.js'
|
|
16
11
|
|
|
@@ -22,10 +17,10 @@ import prompts from 'prompts'
|
|
|
22
17
|
|
|
23
18
|
const argv = parseArgs(process.argv.slice(2), {
|
|
24
19
|
alias: {
|
|
25
|
-
n: 'nogit'
|
|
20
|
+
n: 'nogit'
|
|
26
21
|
},
|
|
27
22
|
|
|
28
|
-
boolean: [
|
|
23
|
+
boolean: ['n']
|
|
29
24
|
})
|
|
30
25
|
|
|
31
26
|
/** @type {Record<string, any>} */
|
|
@@ -37,7 +32,9 @@ const scope = {
|
|
|
37
32
|
prompts.override(scope)
|
|
38
33
|
|
|
39
34
|
if (scope.projectFolder) {
|
|
40
|
-
utils.logger.log(
|
|
35
|
+
utils.logger.log(
|
|
36
|
+
`Using the project folder provided via arguments: ${scope.projectFolder}`
|
|
37
|
+
)
|
|
41
38
|
utils.logger.log()
|
|
42
39
|
}
|
|
43
40
|
|
|
@@ -50,9 +47,21 @@ await utils.prompts(scope, [
|
|
|
50
47
|
initial: 0,
|
|
51
48
|
message: 'What would you like to build?',
|
|
52
49
|
choices: [
|
|
53
|
-
{
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
{
|
|
51
|
+
title: "App with Quasar CLI, let's go!",
|
|
52
|
+
value: 'app',
|
|
53
|
+
description: 'spa/pwa/ssr/bex/electron/capacitor/cordova'
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: 'AppExtension (AE) for Quasar CLI',
|
|
57
|
+
value: 'app-extension',
|
|
58
|
+
description: 'Quasar CLI AE'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
title: 'Quasar UI kit',
|
|
62
|
+
value: 'ui-kit',
|
|
63
|
+
description: 'Vue component and/or directive'
|
|
64
|
+
}
|
|
56
65
|
]
|
|
57
66
|
},
|
|
58
67
|
{
|
|
@@ -69,13 +78,15 @@ await utils.prompts(scope, [
|
|
|
69
78
|
},
|
|
70
79
|
{
|
|
71
80
|
type: (_, { projectFolder }) =>
|
|
72
|
-
|
|
81
|
+
!existsSync(projectFolder) || readdirSync(projectFolder).length === 0
|
|
82
|
+
? null
|
|
83
|
+
: 'confirm',
|
|
73
84
|
name: 'overwrite',
|
|
74
85
|
message: () =>
|
|
75
86
|
(scope.projectFolderName === '.'
|
|
76
87
|
? 'Current directory'
|
|
77
|
-
: `Target directory "${
|
|
78
|
-
|
|
88
|
+
: `Target directory "${scope.projectFolderName}"`) +
|
|
89
|
+
' is not empty. Remove existing files and continue?'
|
|
79
90
|
},
|
|
80
91
|
{
|
|
81
92
|
type: (_, { overwrite } = {}) => {
|
|
@@ -88,21 +99,24 @@ await utils.prompts(scope, [
|
|
|
88
99
|
}
|
|
89
100
|
])
|
|
90
101
|
|
|
91
|
-
const {
|
|
92
|
-
|
|
102
|
+
const { createQuasarScript } = await import(
|
|
103
|
+
`./templates/${scope.projectType}/create-quasar-script.js`
|
|
104
|
+
)
|
|
105
|
+
await createQuasarScript({ scope, utils })
|
|
93
106
|
|
|
94
107
|
console.log()
|
|
95
108
|
utils.logger.success('The project has been scaffolded')
|
|
96
109
|
console.log()
|
|
97
110
|
|
|
98
|
-
function finalize
|
|
111
|
+
function finalize() {
|
|
99
112
|
if (scope.projectFolder) {
|
|
100
113
|
console.log()
|
|
101
114
|
|
|
102
115
|
if (argv.nogit) {
|
|
103
|
-
utils.logger.log(
|
|
104
|
-
|
|
105
|
-
|
|
116
|
+
utils.logger.log(
|
|
117
|
+
'Skipping git initialization as --nogit flag was provided'
|
|
118
|
+
)
|
|
119
|
+
} else {
|
|
106
120
|
utils.initializeGit(scope.projectFolder)
|
|
107
121
|
}
|
|
108
122
|
}
|
|
@@ -111,41 +125,47 @@ function finalize () {
|
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
if (scope.skipDepsInstall !== true) {
|
|
114
|
-
await utils.prompts(
|
|
128
|
+
await utils.prompts(
|
|
129
|
+
scope,
|
|
130
|
+
[
|
|
131
|
+
{
|
|
132
|
+
type: 'select',
|
|
133
|
+
name: 'packageManager',
|
|
134
|
+
message: 'Install project dependencies? (recommended)',
|
|
135
|
+
choices: () =>
|
|
136
|
+
utils.runningPackageManager
|
|
137
|
+
? [
|
|
138
|
+
{
|
|
139
|
+
title: `Yes, use ${utils.runningPackageManager.name}`,
|
|
140
|
+
value: utils.runningPackageManager.name
|
|
141
|
+
},
|
|
142
|
+
{ title: 'No, I will handle that myself', value: false }
|
|
143
|
+
]
|
|
144
|
+
: [
|
|
145
|
+
{ title: 'Yes, use Yarn (recommended)', value: 'yarn' },
|
|
146
|
+
{ title: 'Yes, use PNPM (recommended)', value: 'pnpm' },
|
|
147
|
+
{ title: 'Yes, use NPM', value: 'npm' },
|
|
148
|
+
{ title: 'Yes, use Bun', value: 'bun' },
|
|
149
|
+
{ title: 'No, I will handle that myself', value: false }
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
],
|
|
115
153
|
{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
utils.runningPackageManager
|
|
122
|
-
? [
|
|
123
|
-
{ title: `Yes, use ${ utils.runningPackageManager.name }`, value: utils.runningPackageManager.name },
|
|
124
|
-
{ title: 'No, I will handle that myself', value: false }
|
|
125
|
-
]
|
|
126
|
-
: [
|
|
127
|
-
{ title: 'Yes, use Yarn (recommended)', value: 'yarn' },
|
|
128
|
-
{ title: 'Yes, use PNPM (recommended)', value: 'pnpm' },
|
|
129
|
-
{ title: 'Yes, use NPM', value: 'npm' },
|
|
130
|
-
{ title: 'Yes, use Bun', value: 'bun' },
|
|
131
|
-
{ title: 'No, I will handle that myself', value: false }
|
|
132
|
-
]
|
|
133
|
-
)
|
|
134
|
-
}
|
|
135
|
-
], {
|
|
136
|
-
onCancel: () => {
|
|
137
|
-
scope.packageManager = false
|
|
138
|
-
finalize()
|
|
139
|
-
process.exit(0)
|
|
154
|
+
onCancel: () => {
|
|
155
|
+
scope.packageManager = false
|
|
156
|
+
finalize()
|
|
157
|
+
process.exit(0)
|
|
158
|
+
}
|
|
140
159
|
}
|
|
141
|
-
|
|
160
|
+
)
|
|
142
161
|
|
|
143
162
|
if (scope.packageManager !== false) {
|
|
144
163
|
try {
|
|
145
164
|
await utils.installDeps(scope)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
165
|
+
} catch {
|
|
166
|
+
utils.logger.warn(
|
|
167
|
+
'Could not auto install dependencies. Probably a temporary npm registry issue?'
|
|
168
|
+
)
|
|
149
169
|
scope.packageManager = false
|
|
150
170
|
finalize()
|
|
151
171
|
process.exit(0)
|
|
@@ -154,8 +174,7 @@ if (scope.skipDepsInstall !== true) {
|
|
|
154
174
|
if (scope.preset.lint) {
|
|
155
175
|
try {
|
|
156
176
|
await utils.lintFolder(scope)
|
|
157
|
-
}
|
|
158
|
-
catch {
|
|
177
|
+
} catch {
|
|
159
178
|
utils.logger.warn('Could not auto lint fix the project folder.')
|
|
160
179
|
}
|
|
161
180
|
}
|
|
@@ -163,8 +182,7 @@ if (scope.skipDepsInstall !== true) {
|
|
|
163
182
|
if (scope.prettier) {
|
|
164
183
|
try {
|
|
165
184
|
await utils.formatFolder(scope)
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
185
|
+
} catch {
|
|
168
186
|
utils.logger.warn('Could not auto format the project folder.')
|
|
169
187
|
}
|
|
170
188
|
}
|
package/package.json
CHANGED
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-quasar",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "Scaffolds Quasar Apps, AppExtensions or UI kits",
|
|
5
|
-
"
|
|
5
|
+
"homepage": "https://quasar.dev",
|
|
6
|
+
"bugs": "https://github.com/quasarframework/quasar/issues",
|
|
7
|
+
"license": "MIT",
|
|
6
8
|
"author": {
|
|
7
9
|
"name": "Razvan Stoenescu",
|
|
8
10
|
"email": "razvan.stoenescu@gmail.com",
|
|
9
11
|
"url": "https://github.com/quasarframework"
|
|
10
12
|
},
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"main": "index.js",
|
|
13
|
-
"bin": {
|
|
14
|
-
"create-quasar": "index.js"
|
|
15
|
-
},
|
|
16
13
|
"repository": {
|
|
17
14
|
"type": "git",
|
|
18
15
|
"url": "https://github.com/quasarframework/quasar"
|
|
19
16
|
},
|
|
20
|
-
"bugs": "https://github.com/quasarframework/quasar/issues",
|
|
21
|
-
"homepage": "https://quasar.dev",
|
|
22
17
|
"funding": {
|
|
23
18
|
"type": "github",
|
|
24
19
|
"url": "https://donate.quasar.dev"
|
|
25
20
|
},
|
|
26
|
-
"
|
|
27
|
-
"
|
|
21
|
+
"bin": {
|
|
22
|
+
"create-quasar": "index.js"
|
|
28
23
|
},
|
|
24
|
+
"type": "module",
|
|
25
|
+
"main": "index.js",
|
|
29
26
|
"dependencies": {
|
|
27
|
+
"cross-spawn": "^7.0.6",
|
|
30
28
|
"fs-extra": "^11.2.0",
|
|
31
29
|
"kolorist": "^1.8.0",
|
|
32
|
-
"lodash": "^4.17.
|
|
30
|
+
"lodash": "^4.17.23",
|
|
33
31
|
"minimist": "^1.2.8",
|
|
34
32
|
"prompts": "^2.4.2",
|
|
35
33
|
"tinyglobby": "^0.2.10"
|
|
@@ -37,14 +35,15 @@
|
|
|
37
35
|
"devDependencies": {
|
|
38
36
|
"@types/lodash": "^4.17.7",
|
|
39
37
|
"@types/prompts": "^2.4.9",
|
|
40
|
-
"@yusufkandemir/eslint-plugin-lodash-template": "^2.0.0",
|
|
41
|
-
"typescript-eslint": "^8.28.0",
|
|
42
|
-
"eslint": "^9.37.0",
|
|
43
38
|
"tsx": "^4.19.1",
|
|
44
39
|
"typescript": "^5.6.2"
|
|
45
40
|
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=16"
|
|
43
|
+
},
|
|
46
44
|
"scripts": {
|
|
47
|
-
"lint": "
|
|
45
|
+
"lint": "oxfmt && oxlint --fix",
|
|
46
|
+
"lint:check": "oxfmt --check && oxlint",
|
|
48
47
|
"create-test-project": "tsx scripts/create-test-project.ts"
|
|
49
48
|
}
|
|
50
49
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import prompts from
|
|
1
|
+
import prompts from "prompts";
|
|
2
2
|
|
|
3
|
-
type ScriptType =
|
|
4
|
-
type AppEngine =
|
|
5
|
-
type PackageManager =
|
|
3
|
+
type ScriptType = "js" | "ts";
|
|
4
|
+
type AppEngine = "vite-2" | "webpack-4";
|
|
5
|
+
type PackageManager = "yarn" | "npm" | "pnpm";
|
|
6
6
|
|
|
7
7
|
type CreateProjectOptions = {
|
|
8
8
|
scriptType: ScriptType;
|
|
@@ -10,35 +10,39 @@ type CreateProjectOptions = {
|
|
|
10
10
|
packageManager: PackageManager;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export async function createProject({
|
|
13
|
+
export async function createProject({
|
|
14
|
+
scriptType,
|
|
15
|
+
appEngine,
|
|
16
|
+
packageManager
|
|
17
|
+
}: CreateProjectOptions) {
|
|
14
18
|
// To bypass Corepack enforcing what's specified in the closest package.json file that has the 'packageManager' field
|
|
15
|
-
process.env.COREPACK_ENABLE_STRICT =
|
|
19
|
+
process.env.COREPACK_ENABLE_STRICT = "0";
|
|
16
20
|
// See https://github.com/yarnpkg/yarn/issues/9015
|
|
17
|
-
process.env.SKIP_YARN_COREPACK_CHECK =
|
|
21
|
+
process.env.SKIP_YARN_COREPACK_CHECK = "1";
|
|
18
22
|
// To alter the behavior to run correctly within this script
|
|
19
|
-
process.env.CREATE_TEST_PROJECT_OVERRIDE =
|
|
23
|
+
process.env.CREATE_TEST_PROJECT_OVERRIDE = "true";
|
|
20
24
|
|
|
21
25
|
prompts.override({
|
|
22
|
-
projectType:
|
|
23
|
-
projectFolder:
|
|
26
|
+
projectType: "app",
|
|
27
|
+
projectFolder: "test-project",
|
|
24
28
|
overwrite: true,
|
|
25
29
|
|
|
26
30
|
scriptType: scriptType,
|
|
27
31
|
engine: appEngine,
|
|
28
32
|
|
|
29
|
-
name:
|
|
30
|
-
productName:
|
|
31
|
-
description:
|
|
32
|
-
author:
|
|
33
|
+
name: "test-project",
|
|
34
|
+
productName: "Test Project",
|
|
35
|
+
description: "A test project",
|
|
36
|
+
author: "Quasar Team (info@quasar.dev)",
|
|
33
37
|
|
|
34
38
|
// The defaults
|
|
35
|
-
sfcStyle:
|
|
36
|
-
css:
|
|
39
|
+
sfcStyle: "composition-setup",
|
|
40
|
+
css: "scss",
|
|
37
41
|
|
|
38
|
-
preset: [
|
|
42
|
+
preset: ["eslint"],
|
|
39
43
|
prettier: true,
|
|
40
44
|
|
|
41
|
-
packageManager
|
|
45
|
+
packageManager
|
|
42
46
|
});
|
|
43
47
|
|
|
44
48
|
// We are overriding .override() as every call overrides the previous overrides (too many overrides :D)
|
|
@@ -47,7 +51,7 @@ export async function createProject({ scriptType, appEngine, packageManager }: C
|
|
|
47
51
|
// Remove all extra arguments to avoid interfering with the index.js script
|
|
48
52
|
process.argv = process.argv.slice(0, 2);
|
|
49
53
|
|
|
50
|
-
await import(
|
|
54
|
+
await import("../index.js");
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
const args = process.argv.slice(2) as [ScriptType, AppEngine, PackageManager];
|
|
@@ -55,9 +59,8 @@ const args = process.argv.slice(2) as [ScriptType, AppEngine, PackageManager];
|
|
|
55
59
|
void createProject({
|
|
56
60
|
scriptType: args[0],
|
|
57
61
|
appEngine: args[1],
|
|
58
|
-
packageManager: args[2]
|
|
59
|
-
})
|
|
60
|
-
.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
62
|
+
packageManager: args[2]
|
|
63
|
+
}).catch(error => {
|
|
64
|
+
console.error(error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
});
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import pluginLodashTemplate from '@yusufkandemir/eslint-plugin-lodash-template'
|
|
2
|
+
import { defineConfig } from 'eslint/config'
|
|
1
3
|
import globals from 'globals'
|
|
2
4
|
import tseslint from 'typescript-eslint'
|
|
3
|
-
import pluginLodashTemplate from '@yusufkandemir/eslint-plugin-lodash-template'
|
|
4
5
|
import baseConfig from '../eslint.config.base.js'
|
|
5
6
|
|
|
6
7
|
// file paths are relative to templates/*/
|
|
7
|
-
export default
|
|
8
|
+
export default defineConfig(
|
|
8
9
|
...baseConfig,
|
|
9
10
|
|
|
10
11
|
{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export async function
|
|
1
|
+
export async function createQuasarScript({ scope, utils }) {
|
|
2
2
|
await utils.prompts(scope, [
|
|
3
3
|
{
|
|
4
4
|
type: 'select',
|
|
@@ -6,7 +6,11 @@ export async function script ({ scope, utils }) {
|
|
|
6
6
|
message: 'Pick Quasar App CLI variant:',
|
|
7
7
|
initial: 0,
|
|
8
8
|
choices: [
|
|
9
|
-
{
|
|
9
|
+
{
|
|
10
|
+
title: 'Quasar App CLI with Vite',
|
|
11
|
+
value: 'vite-2',
|
|
12
|
+
description: 'recommended'
|
|
13
|
+
},
|
|
10
14
|
{ title: 'Quasar App CLI with Webpack', value: 'webpack-4' }
|
|
11
15
|
]
|
|
12
16
|
},
|
|
@@ -15,12 +19,12 @@ export async function script ({ scope, utils }) {
|
|
|
15
19
|
name: 'name',
|
|
16
20
|
message: 'Package name:',
|
|
17
21
|
initial: () => utils.inferPackageName(scope.projectFolderName),
|
|
18
|
-
validate:
|
|
22
|
+
validate: val =>
|
|
19
23
|
utils.isValidPackageName(val) || 'Invalid package.json name'
|
|
20
24
|
},
|
|
21
25
|
|
|
22
26
|
utils.commonPrompts.productName,
|
|
23
|
-
utils.commonPrompts.description
|
|
27
|
+
utils.commonPrompts.description
|
|
24
28
|
])
|
|
25
29
|
|
|
26
30
|
await utils.injectAuthor(scope)
|
|
@@ -32,8 +36,16 @@ export async function script ({ scope, utils }) {
|
|
|
32
36
|
message: 'Pick a Vue component style:',
|
|
33
37
|
initial: 0,
|
|
34
38
|
choices: [
|
|
35
|
-
{
|
|
36
|
-
|
|
39
|
+
{
|
|
40
|
+
title: 'Composition API with <script setup>',
|
|
41
|
+
value: 'composition-setup',
|
|
42
|
+
description: 'recommended'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
title: 'Composition API',
|
|
46
|
+
value: 'composition',
|
|
47
|
+
description: 'recommended'
|
|
48
|
+
},
|
|
37
49
|
{ title: 'Options API', value: 'options' }
|
|
38
50
|
]
|
|
39
51
|
},
|
|
@@ -51,6 +63,8 @@ export async function script ({ scope, utils }) {
|
|
|
51
63
|
}
|
|
52
64
|
])
|
|
53
65
|
|
|
54
|
-
const {
|
|
55
|
-
|
|
66
|
+
const { createQuasarScript: create } = await import(
|
|
67
|
+
`./${scope.scriptType}-${scope.engine}/create-quasar-script.js`
|
|
68
|
+
)
|
|
69
|
+
await create({ scope, utils })
|
|
56
70
|
}
|
|
@@ -15,34 +15,34 @@
|
|
|
15
15
|
"postinstall": "quasar prepare"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
<% if (preset.axios) { %>"axios": "^1.
|
|
19
|
-
<% if (preset.i18n) { %>"vue-i18n": "^11.
|
|
18
|
+
<% if (preset.axios) { %>"axios": "^1.13.6",<% } %>
|
|
19
|
+
<% if (preset.i18n) { %>"vue-i18n": "^11.3.0",<% } %>
|
|
20
20
|
<% if (preset.pinia) { %>"pinia": "^3.0.1",<% } %>
|
|
21
21
|
"@quasar/extras": "^1.16.4",
|
|
22
22
|
"quasar": "^2.16.0",
|
|
23
23
|
"vue": "^3.5.22",
|
|
24
|
-
"vue-router": "^5.0.
|
|
24
|
+
"vue-router": "^5.0.3"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
<% if (preset.i18n) { %>"@intlify/unplugin-vue-i18n": "^
|
|
27
|
+
<% if (preset.i18n) { %>"@intlify/unplugin-vue-i18n": "^11.0.0",<% } %>
|
|
28
28
|
<% if (preset.eslint) { %>
|
|
29
|
-
"@eslint/js": "^9.
|
|
30
|
-
"eslint": "^9.
|
|
31
|
-
"eslint-plugin-vue": "^10.
|
|
32
|
-
"globals": "^
|
|
33
|
-
"vite-plugin-checker": "^0.
|
|
34
|
-
"vue-eslint-parser": "^10.
|
|
29
|
+
"@eslint/js": "^9.39.4",
|
|
30
|
+
"eslint": "^9.39.4",
|
|
31
|
+
"eslint-plugin-vue": "^10.8.0",
|
|
32
|
+
"globals": "^17.4.0",
|
|
33
|
+
"vite-plugin-checker": "^0.12.0",
|
|
34
|
+
"vue-eslint-parser": "^10.4.0",
|
|
35
35
|
<% } %>
|
|
36
36
|
<% if (prettier) { %>
|
|
37
|
-
"@vue/eslint-config-prettier": "^10.
|
|
38
|
-
"prettier": "^3.
|
|
37
|
+
"@vue/eslint-config-prettier": "^10.2.0",
|
|
38
|
+
"prettier": "^3.8.1",
|
|
39
39
|
<% } %>
|
|
40
|
-
"@quasar/app-vite": "^2.1
|
|
41
|
-
"autoprefixer": "^10.4.
|
|
42
|
-
"postcss": "^8.
|
|
40
|
+
"@quasar/app-vite": "^2.5.1",
|
|
41
|
+
"autoprefixer": "^10.4.27",
|
|
42
|
+
"postcss": "^8.5.8"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
|
-
"node": "^28 || ^26 || ^24 || ^22
|
|
45
|
+
"node": "^28 || ^26 || ^24 || ^22.12",
|
|
46
46
|
"npm": ">= 6.13.4",
|
|
47
47
|
"yarn": ">= 1.21.1",
|
|
48
48
|
"pnpm": ">= 10.0.0"
|
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
export async function
|
|
1
|
+
export async function createQuasarScript({ scope, utils }) {
|
|
2
2
|
await utils.prompts(scope, [
|
|
3
3
|
{
|
|
4
4
|
type: 'multiselect',
|
|
5
5
|
name: 'preset',
|
|
6
6
|
message: 'Check the features needed for your project:',
|
|
7
7
|
choices: [
|
|
8
|
-
{
|
|
9
|
-
|
|
8
|
+
{
|
|
9
|
+
title: 'Linting (vite-plugin-checker + ESLint)',
|
|
10
|
+
value: 'eslint',
|
|
11
|
+
description: 'recommended',
|
|
12
|
+
selected: true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
title: 'State Management (Pinia)',
|
|
16
|
+
value: 'pinia',
|
|
17
|
+
description: 'https://pinia.vuejs.org'
|
|
18
|
+
},
|
|
10
19
|
{ title: 'axios', value: 'axios' },
|
|
11
20
|
{ title: 'vue-i18n', value: 'i18n' }
|
|
12
21
|
],
|
|
@@ -15,30 +15,30 @@
|
|
|
15
15
|
"postinstall": "quasar prepare"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
<% if (preset.axios) { %>"axios": "^1.
|
|
19
|
-
<% if (preset.i18n) { %>"vue-i18n": "^11.
|
|
18
|
+
<% if (preset.axios) { %>"axios": "^1.13.6",<% } %>
|
|
19
|
+
<% if (preset.i18n) { %>"vue-i18n": "^11.3.0",<% } %>
|
|
20
20
|
<% if (preset.pinia) { %>"pinia": "^3.0.1",<% } %>
|
|
21
21
|
"@quasar/extras": "^1.16.4",
|
|
22
22
|
"core-js": "^3.31.1",
|
|
23
23
|
"quasar": "^2.16.0",
|
|
24
24
|
"vue": "^3.5.22",
|
|
25
|
-
"vue-router": "^5.0.
|
|
25
|
+
"vue-router": "^5.0.3"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
<% if (preset.eslint) { %>
|
|
29
29
|
"@eslint/js": "^9.14.0",
|
|
30
30
|
"eslint": "^9.14.0",
|
|
31
|
-
"eslint-plugin-vue": "^10.
|
|
31
|
+
"eslint-plugin-vue": "^10.8.0",
|
|
32
32
|
"eslint-webpack-plugin": "^4.2.0",
|
|
33
|
-
"globals": "^
|
|
34
|
-
"vue-eslint-parser": "^10.
|
|
33
|
+
"globals": "^17.4.0",
|
|
34
|
+
"vue-eslint-parser": "^10.4.0",
|
|
35
35
|
<% } %>
|
|
36
36
|
<% if (prettier) { %>
|
|
37
|
-
"@vue/eslint-config-prettier": "^10.
|
|
38
|
-
"prettier": "^3.
|
|
37
|
+
"@vue/eslint-config-prettier": "^10.2.0",
|
|
38
|
+
"prettier": "^3.8.1",
|
|
39
39
|
<% } %>
|
|
40
40
|
"@quasar/app-webpack": "^4.1.0",
|
|
41
|
-
"autoprefixer": "^10.4.
|
|
41
|
+
"autoprefixer": "^10.4.27"
|
|
42
42
|
},
|
|
43
43
|
"browserslist": [
|
|
44
44
|
"last 10 Chrome versions",
|
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
export async function
|
|
1
|
+
export async function createQuasarScript({ scope, utils }) {
|
|
2
2
|
await utils.prompts(scope, [
|
|
3
3
|
{
|
|
4
4
|
type: 'multiselect',
|
|
5
5
|
name: 'preset',
|
|
6
6
|
message: 'Check the features needed for your project:',
|
|
7
7
|
choices: [
|
|
8
|
-
{
|
|
9
|
-
|
|
8
|
+
{
|
|
9
|
+
title: 'Linting (ESLint)',
|
|
10
|
+
value: 'eslint',
|
|
11
|
+
description: 'recommended',
|
|
12
|
+
selected: true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
title: 'State Management (Pinia)',
|
|
16
|
+
value: 'pinia',
|
|
17
|
+
description: 'https://pinia.vuejs.org'
|
|
18
|
+
},
|
|
10
19
|
{ title: 'axios', value: 'axios' },
|
|
11
20
|
{ title: 'vue-i18n', value: 'i18n' }
|
|
12
21
|
],
|