Skip to content

Commit cf156f2

Browse files
committed
feat: auto add default layout when creating layouts dir
1 parent 19bbc65 commit cf156f2

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

src/commands/Structure.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
import { window } from 'vscode'
22
import { mkdirSync, existsSync } from 'node:fs'
3-
import { isNuxtTwo, createFile, projectRootDirectory, projectSrcDirectory } from '../utils'
3+
import { isNuxtTwo, createFile, projectRootDirectory, projectSrcDirectory, generateVueFileTemplate } from '../utils'
44
import { appConfigContent } from '../templates'
5-
import { generateVueFileTemplate } from '../utils/files'
65

76
function promptDirectorySelection() {
8-
let directories = [
9-
'components',
10-
'pages',
11-
'assets',
12-
'plugins',
13-
'layouts',
14-
'middleware',
15-
'modules',
16-
]
7+
let directories = ['components', 'pages', 'assets', 'plugins', 'layouts', 'middleware', 'modules',]
178

189
let nuxtTwoDirectories = ['static', 'store',]
1910

@@ -23,6 +14,8 @@ function promptDirectorySelection() {
2314
? (directories = [...directories, ...nuxtTwoDirectories])
2415
: (directories = [...directories, ...nuxtThreeDirectories])
2516

17+
directories.sort()
18+
2619
window
2720
.showQuickPick(directories, {
2821
canPickMany: true,
@@ -31,16 +24,24 @@ function promptDirectorySelection() {
3124
.then((selectedDirs) => {
3225
if (selectedDirs !== undefined && selectedDirs.length > 0) {
3326
selectedDirs.forEach((dir) => {
34-
let path = `${projectSrcDirectory()}/${dir}`
35-
if (!existsSync(path)) {
36-
mkdirSync(path)
27+
let dirPath = `${projectSrcDirectory()}/${dir}`
28+
if (!existsSync(dirPath)) {
29+
mkdirSync(dirPath)
3730
}
3831

3932
if (dir === 'pages') {
4033
createFile({
4134
fileName: `index.vue`,
4235
content: generateVueFileTemplate('page'),
43-
fullPath: `${path}/index.vue`,
36+
fullPath: `${dirPath}/index.vue`,
37+
})
38+
}
39+
40+
if (dir === 'layouts') {
41+
createFile({
42+
fileName: `default.vue`,
43+
content: generateVueFileTemplate('layout'),
44+
fullPath: `${dirPath}/default.vue`,
4445
})
4546
}
4647
})

src/utils/files.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ let piniaConfig = nuxtrConfiguration().piniaFiles.defaultTemplate
77
let eolConfiguration = vscodeConfiguration().files.eol
88
let eol = eolConfiguration === 'auto' ? '\n' : eolConfiguration
99

10-
export function generateVueFileTemplate(type: string, template?: string) {
10+
export function generateVueFileTemplate(type: 'page' | 'layout', template?: string) {
1111
const userDefaultTemplate = template || (type === 'page'
1212
? vueFilesConfig.pages.defaultTemplate
1313
: vueFilesConfig.layouts.defaultTemplate);

ui/build/assets/index.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)