Skip to content

Commit 3a7a8a0

Browse files
authored
chore: update resolveContentConfig a bit and viewer logging (#931)
1 parent 2077e60 commit 3a7a8a0

2 files changed

Lines changed: 24 additions & 19 deletions

File tree

src/internal-context/load.ts

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { addTemplate, findPath, resolveAlias, updateTemplates, useNuxt } from '@nuxt/kit'
22
import type { NuxtOptions, NuxtConfig } from '@nuxt/schema'
3-
import { join, relative, resolve } from 'pathe'
3+
import { join, relative, resolve, isAbsolute } from 'pathe'
44
import { getContext } from 'unctx'
55
import { loadConfig as loadConfigC12, type ResolvedConfig as ResolvedC12Config } from 'c12'
66
import type { ModuleOptions, TWConfig } from '../types'
@@ -58,23 +58,25 @@ const createInternalContext = async (moduleOptions: ModuleOptions, nuxt = useNux
5858
: null
5959
}))
6060

61-
const resolveContentConfig = (srcDir: string, nuxtOptions: NuxtOptions | NuxtConfig = useNuxt().options): ResolvedConfig => {
62-
const r = (p: string) => p.startsWith(srcDir) ? p : resolve(srcDir, p)
63-
const extensionFormat = (s: string[]) => s.length > 1 ? `.{${s.join(',')}}` : `.${s.join('') || 'vue'}`
61+
const resolveContentConfig = (rootDir: string, nuxtOptions: NuxtOptions | NuxtConfig = useNuxt().options): ResolvedConfig => {
62+
const r = (p: string) => isAbsolute(p) || p.startsWith(rootDir) ? p : resolve(rootDir, p)
63+
const withSrcDir = (p: string) => r(nuxtOptions.srcDir && !p.startsWith(nuxtOptions.srcDir) ? resolve(nuxtOptions.srcDir, p) : p)
64+
// const withAppDir = (p: string) => r(nuxtOptions.appDir && !p.startsWith(nuxtOptions.appDir) ? resolve(nuxtOptions.appDir, p) : p)
6465

65-
const defaultExtensions = extensionFormat(['js', 'ts', 'mjs'])
66-
const sfcExtensions = extensionFormat(Array.from(new Set(['.vue', ...(nuxtOptions.extensions || nuxt.options.extensions)])).map(e => e?.replace(/^\.*/, '')).filter((v): v is string => Boolean(v)))
66+
const formatExtensions = (s: string[]) => s.length > 1 ? `.{${s.join(',')}}` : `.${s.join('') || 'vue'}`
67+
const defaultExtensions = formatExtensions(['js', 'ts', 'mjs'])
68+
const sfcExtensions = formatExtensions(Array.from(new Set(['.vue', ...(nuxtOptions.extensions || nuxt.options.extensions)])).map(e => e?.replace(/^\.*/, '')).filter((v): v is string => Boolean(v)))
6769

68-
const importDirs = [...(nuxtOptions.imports?.dirs || [])].filter((v): v is string => Boolean(v)).map(r)
69-
const [composablesDir, utilsDir] = [resolve(srcDir, 'composables'), resolve(srcDir, 'utils')]
70+
const importDirs = [...(nuxtOptions.imports?.dirs || [])].filter((v): v is string => Boolean(v)).map(withSrcDir)
71+
const [composablesDir, utilsDir] = [resolve(rootDir, 'composables'), resolve(rootDir, 'utils')]
7072

7173
if (!importDirs.includes(composablesDir)) importDirs.push(composablesDir)
7274
if (!importDirs.includes(utilsDir)) importDirs.push(utilsDir)
7375

7476
return {
7577
config: {
7678
content: [
77-
r(`components/**/*${sfcExtensions}`),
79+
withSrcDir(`components/**/*${sfcExtensions}`),
7880
...(() => {
7981
if (nuxtOptions.components) {
8082
return (Array.isArray(nuxtOptions.components) ? nuxtOptions.components : typeof nuxtOptions.components === 'boolean' ? ['components'] : (nuxtOptions.components.dirs || [])).map((d) => {
@@ -85,16 +87,16 @@ const createInternalContext = async (moduleOptions: ModuleOptions, nuxt = useNux
8587
return []
8688
})(),
8789

88-
nuxtOptions.dir?.layouts && r(`${nuxtOptions.dir.layouts}/**/*${sfcExtensions}`),
89-
...([true, undefined].includes(nuxtOptions.pages) && nuxtOptions.dir?.pages ? [r(`${nuxtOptions.dir.pages}/**/*${sfcExtensions}`)] : []),
90+
nuxtOptions.dir?.layouts && withSrcDir(`${nuxtOptions.dir.layouts}/**/*${sfcExtensions}`),
91+
...([true, undefined].includes(nuxtOptions.pages) && nuxtOptions.dir?.pages ? [withSrcDir(`${nuxtOptions.dir.pages}/**/*${sfcExtensions}`)] : []),
9092

91-
nuxtOptions.dir?.plugins && r(`${nuxtOptions.dir.plugins}/**/*${defaultExtensions}`),
93+
nuxtOptions.dir?.plugins && withSrcDir(`${nuxtOptions.dir.plugins}/**/*${defaultExtensions}`),
9294
...importDirs.map(d => `${d}/**/*${defaultExtensions}`),
9395

94-
r(`{A,a}pp${sfcExtensions}`),
95-
r(`{E,e}rror${sfcExtensions}`),
96-
r(`app.config${defaultExtensions}`),
97-
!nuxtOptions.ssr && nuxtOptions.spaLoadingTemplate !== false && r(typeof nuxtOptions.spaLoadingTemplate === 'string' ? nuxtOptions.spaLoadingTemplate : 'app/spa-loading-template.html'),
96+
withSrcDir(`{A,a}pp${sfcExtensions}`),
97+
withSrcDir(`{E,e}rror${sfcExtensions}`),
98+
withSrcDir(`app.config${defaultExtensions}`),
99+
!nuxtOptions.ssr && nuxtOptions.spaLoadingTemplate !== false && withSrcDir(typeof nuxtOptions.spaLoadingTemplate === 'string' ? nuxtOptions.spaLoadingTemplate : 'app/spa-loading-template.html'),
98100
].filter((p): p is string => Boolean(p)),
99101
},
100102
}
@@ -119,13 +121,13 @@ const createInternalContext = async (moduleOptions: ModuleOptions, nuxt = useNux
119121
}
120122

121123
return Promise.all([
122-
resolveContentConfig(nuxt.options.srcDir, nuxt.options),
124+
resolveContentConfig(nuxt.options.rootDir, nuxt.options),
123125
...resolveConfigs(moduleOptions.config, nuxt),
124126
loadConfig({ name: 'tailwind', cwd: nuxt.options.rootDir, merger: configMerger, packageJson: true, extend: false }).then(thenCallHook),
125127
...resolveConfigs(moduleOptions.configPath, nuxt),
126128

127129
...(nuxt.options._layers || []).slice(1).flatMap(nuxtLayer => [
128-
resolveContentConfig(nuxtLayer.config?.srcDir || nuxtLayer.cwd, nuxtLayer.config),
130+
resolveContentConfig(nuxtLayer.config.rootDir || nuxtLayer.cwd, nuxtLayer.config),
129131
...resolveConfigs(nuxtLayer.config.tailwindcss?.config, nuxt),
130132
loadConfig({ name: 'tailwind', cwd: nuxtLayer.cwd, merger: configMerger, packageJson: true, extend: false }).then(thenCallHook),
131133
...resolveConfigs(nuxtLayer.config.tailwindcss?.configPath, nuxt),

src/viewer.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ export const setupViewer = async (twConfig: string | Partial<TWConfig>, config:
5353
})
5454
})
5555

56-
nuxt.hook('listen', (_, listener) => {
56+
const shouldLogUrl = 'devtools' in nuxt.options ? !nuxt.options.devtools.enabled : true
57+
58+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
59+
shouldLogUrl && nuxt.hook('listen', (_, listener) => {
5760
const viewerUrl = cleanDoubleSlashes(joinURL(listener.url, config.endpoint))
5861
logger.info(`Tailwind Viewer: ${colors.underline(colors.yellow(withTrailingSlash(viewerUrl)))}`)
5962
})

0 commit comments

Comments
 (0)