Skip to content

Commit 83254de

Browse files
committed
feat: nested plugins
1 parent bfa6de4 commit 83254de

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

adex/src/vite.js

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,27 @@ const adapterMap = {
2929

3030
/**
3131
* @param {import("./vite.js").AdexOptions} [options]
32-
* @returns
32+
* @returns {(import("vite").Plugin)[]}
3333
*/
3434
export function adex({
3535
fonts,
3636
islands = false,
3737
ssr = true,
3838
adapter: adapter = 'node',
39-
__clientConfig = {},
4039
} = {}) {
40+
/**
41+
*@type {Partial<import('vite').UserConfig>}
42+
*/
43+
let rootCfg = {}
44+
// @ts-expect-error probably because of the `.filter`
4145
return [
46+
{
47+
name: 'adex-cfg',
48+
enforce: 'pre',
49+
configResolved(cfg) {
50+
rootCfg = cfg
51+
},
52+
},
4253
preactPages({
4354
root: '/src/pages',
4455
id: '~routes',
@@ -134,8 +145,8 @@ export function adex({
134145
islands && adexIslandsBuilder(),
135146

136147
// SSR/Render Server Specific plugins
137-
ssr && adexServerBuilder({ fonts, adapter, islands }),
138-
]
148+
ssr && adexServerBuilder({ fonts, rootCfg: rootCfg, adapter, islands }),
149+
].filter(Boolean)
139150
}
140151

141152
/**
@@ -210,7 +221,7 @@ function adexClientBuilder({ ssr = true, islands = false } = {}) {
210221
*/
211222
function adexBuildPrep({ islands = false }) {
212223
return {
213-
name: 'remover',
224+
name: 'adex-build-prep',
214225
apply: 'build',
215226
async configResolved(config) {
216227
if (!islands) return
@@ -497,7 +508,7 @@ function adexDevServer({ islands = false } = {}) {
497508
const devCSSMap = new Map()
498509
let cfg
499510
return {
500-
name: adexDevServer.name,
511+
name: 'adex-dev-server',
501512
apply: 'serve',
502513
enforce: 'pre',
503514
configResolved(_cfg) {
@@ -569,11 +580,12 @@ function adexDevServer({ islands = false } = {}) {
569580
/**
570581
* @param {object} options
571582
* @param {import("./fonts.js").Options} options.fonts
583+
* @param {import("vite").UserConfig} options.rootCfg
572584
* @param {string} options.adapter
573585
* @param {boolean} options.islands
574586
* @returns {import("vite").Plugin}
575587
*/
576-
function adexServerBuilder({ fonts, adapter, islands }) {
588+
function adexServerBuilder({ fonts, rootCfg, adapter, islands }) {
577589
let input = 'src/entry-server.js'
578590
let cfg
579591
return {
@@ -596,6 +608,10 @@ function adexServerBuilder({ fonts, adapter, islands }) {
596608

597609
console.log(`\nBuilding Server: ${serverOutDir}\n`)
598610

611+
const sanitizedPlugins = rootCfg.plugins
612+
.filter(d => !d.name.startsWith('vite:'))
613+
.filter(d => !d.name.startsWith('adex-'))
614+
599615
await build({
600616
configFile: false,
601617
ssr: {
@@ -696,6 +712,7 @@ function adexServerBuilder({ fonts, adapter, islands }) {
696712
),
697713
addFontsPlugin(fonts),
698714
islands && adexIslandsBuilder(),
715+
...sanitizedPlugins,
699716
],
700717
build: {
701718
outDir: serverOutDir,
@@ -776,7 +793,7 @@ function preactPages({
776793
replacer = '',
777794
} = {}) {
778795
return {
779-
name: 'routes',
796+
name: 'adex-routes',
780797
enforce: 'pre',
781798
resolveId(id) {
782799
if (id !== virtualId) {

0 commit comments

Comments
 (0)