|
1 | | -import { cp, mkdir, readFile, rm, writeFile } from 'node:fs/promises' |
| 1 | +import { cp, mkdir, readdir, readFile, rm, stat, writeFile } from 'node:fs/promises' |
2 | 2 | import { dirname, join, relative } from 'node:path/posix' |
3 | 3 |
|
4 | 4 | import type { Manifest, ManifestFunction } from '@netlify/edge-functions' |
@@ -259,14 +259,26 @@ const copyHandlerDependenciesForNodeMiddleware = async (ctx: PluginContext) => { |
259 | 259 |
|
260 | 260 | parts.push(`const virtualModules = new Map();`) |
261 | 261 |
|
262 | | - for (const file of files) { |
263 | | - const srcPath = join(srcDir, file) |
| 262 | + const handleFileOrDirectory = async (fileOrDir: string) => { |
| 263 | + const srcPath = join(srcDir, fileOrDir) |
264 | 264 |
|
265 | | - const content = await readFile(srcPath, 'utf8') |
| 265 | + const stats = await stat(srcPath) |
| 266 | + if (stats.isDirectory()) { |
| 267 | + const filesInDir = await readdir(srcPath) |
| 268 | + for (const fileInDir of filesInDir) { |
| 269 | + await handleFileOrDirectory(join(fileOrDir, fileInDir)) |
| 270 | + } |
| 271 | + } else { |
| 272 | + const content = await readFile(srcPath, 'utf8') |
266 | 273 |
|
267 | | - parts.push( |
268 | | - `virtualModules.set(${JSON.stringify(join(commonPrefix, file))}, ${JSON.stringify(content)});`, |
269 | | - ) |
| 274 | + parts.push( |
| 275 | + `virtualModules.set(${JSON.stringify(join(commonPrefix, fileOrDir))}, ${JSON.stringify(content)});`, |
| 276 | + ) |
| 277 | + } |
| 278 | + } |
| 279 | + |
| 280 | + for (const file of files) { |
| 281 | + await handleFileOrDirectory(file) |
270 | 282 | } |
271 | 283 | parts.push(`registerCJSModules(import.meta.url, virtualModules); |
272 | 284 |
|
|
0 commit comments