Skip to content

Commit 995e6ea

Browse files
authored
feat: support for use in the nuxt layers (#157)
* feat: support for use in nuxt layers * fix: type error
1 parent 4b712c8 commit 995e6ea

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

src/core/transformPlugin.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
import type { PresetComponent, TransformOptions } from '../types'
1212

1313
interface PluginOptions extends TransformOptions {
14+
layers: string[]
1415
sourcemap?: NuxtOptions['sourcemap']['client']
1516
transformStyles: (name: string) => undefined | string
1617
transformDirectives: (name: string) => undefined | [name: string, path: string, style?: string]
@@ -21,12 +22,15 @@ const directivesRegExp = /(?<=[ (])_?resolveDirective\(\s*["']([^'"]*?)["'][\s,]
2122
const methodsRegExp = toRegExp(allMethods, 'g')
2223

2324
export const transformPlugin = createUnplugin((options: PluginOptions) => {
24-
const { include, exclude, sourcemap, transformStyles, transformDirectives } = options
25+
const { layers, include, exclude, sourcemap, transformStyles, transformDirectives } = options
2526

2627
return {
2728
name: `${libraryName}:transform`,
2829
enforce: 'post',
2930
transformInclude (id) {
31+
if (layers.some(layer => id.startsWith(layer))) {
32+
return true
33+
}
3034
if (exclude.some(pattern => id.match(pattern))) {
3135
return false
3236
}

src/module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
transformPlugin,
1616
localePlugin
1717
} from './core/index'
18+
import { getLayersDir } from './utils'
1819
import type { ModuleOptions } from './types'
1920
export type { ModuleOptions } from './types'
2021

@@ -28,6 +29,8 @@ export default defineNuxtModule<ModuleOptions>({
2829
},
2930
defaults,
3031
setup (options, nuxt) {
32+
const layers = getLayersDir(nuxt.options._layers)
33+
3134
resolveOptions()
3235
resolveThemes(options)
3336
resolveBaseImports(options)
@@ -47,6 +50,7 @@ export default defineNuxtModule<ModuleOptions>({
4750

4851
config.plugins = config.plugins || []
4952
config.plugins.push(transformPlugin.vite({
53+
layers,
5054
include: options.include,
5155
exclude: options.exclude,
5256
sourcemap: nuxt.options.sourcemap[mode],
@@ -68,6 +72,7 @@ export default defineNuxtModule<ModuleOptions>({
6872

6973
config.plugins = config.plugins || []
7074
config.plugins.push(transformPlugin.webpack({
75+
layers,
7176
include: options.include,
7277
exclude: options.exclude,
7378
sourcemap: nuxt.options.sourcemap[mode],

src/utils.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Component } from 'vue'
22
import { createResolver } from '@nuxt/kit'
3+
import type { NuxtConfigLayer } from '@nuxt/schema'
34
import { allIcons } from './config'
45
import type { PresetComponent } from './types'
56

@@ -8,6 +9,19 @@ export function resolvePath (path: string): Promise<string> {
89
return resolvePath(path)
910
}
1011

12+
export function getLayersDir (layers: NuxtConfigLayer[]) {
13+
const list = []
14+
15+
for (const layer of layers) {
16+
const srcDir = layer.config.srcDir || layer.cwd
17+
if (srcDir.includes('node_modules') && layer.config.elementPlus?.importStyle !== false) {
18+
list.push(srcDir)
19+
}
20+
}
21+
22+
return list
23+
}
24+
1125
export function isArray (value: any): value is any[] {
1226
return Array.isArray(value)
1327
}

0 commit comments

Comments
 (0)