11import { addTemplate , findPath , resolveAlias , updateTemplates , useNuxt } from '@nuxt/kit'
22import type { NuxtOptions , NuxtConfig } from '@nuxt/schema'
3- import { join , relative , resolve } from 'pathe'
3+ import { join , relative , resolve , isAbsolute } from 'pathe'
44import { getContext } from 'unctx'
55import { loadConfig as loadConfigC12 , type ResolvedConfig as ResolvedC12Config } from 'c12'
66import 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 ) ,
0 commit comments