Skip to content

Commit b300f13

Browse files
authored
fix: small workarounds for alpha (#57)
* fix: add manifest back * fix: static file order * fix: workaround for functions v2 issues * chore: fix public path in static tests * chore: update manifest name * fix: add cwd to public dir when copying public assets * fix: revert cwd add to publish
1 parent f677545 commit b300f13

File tree

6 files changed

+26
-22
lines changed

6 files changed

+26
-22
lines changed

manifest.yml

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
name: '@netlify/next-runtime'

src/build/config.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
import { NetlifyConfig } from '@netlify/build'
2+
13
/**
24
* Enable Next.js standalone mode at build time
35
*/
4-
export const setBuildConfig = () => {
6+
export const setBuildConfig = (netlifyConfig: NetlifyConfig) => {
57
process.env.NEXT_PRIVATE_STANDALONE = 'true'
8+
netlifyConfig.redirects ||= []
9+
netlifyConfig.redirects.push({
10+
from: '/*',
11+
to: '/.netlify/functions/___netlify-server-handler',
12+
status: 200,
13+
})
614
}

src/build/content/static.test.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { vol, fs } from 'memfs'
2-
import { expect, test, vi, afterEach } from 'vitest'
1+
import { fs, vol } from 'memfs'
32
import { join } from 'node:path'
3+
import { afterEach, expect, test, vi } from 'vitest'
4+
import { fsCpHelper, mockFileSystem } from '../../../tests/index.js'
45
import { BUILD_DIR } from '../constants.js'
56
import { copyStaticContent } from './static.js'
6-
import { mockFileSystem, fsCpHelper } from '../../../tests/index.js'
77

88
vi.mock('node:fs', () => fs)
99
vi.mock('node:fs/promises', () => {
@@ -59,10 +59,7 @@ test('should copy files from the public directory to the publish directory', asy
5959

6060
const filenamesInVolume = Object.keys(vol.toJSON())
6161
expect(filenamesInVolume).toEqual(
62-
expect.arrayContaining([
63-
`${PUBLISH_DIR}/public/fake-image.svg`,
64-
`${PUBLISH_DIR}/public/another-asset.json`,
65-
]),
62+
expect.arrayContaining([`${PUBLISH_DIR}/fake-image.svg`, `${PUBLISH_DIR}/another-asset.json`]),
6663
)
6764
})
6865

src/build/content/static.ts

+5-7
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ const copyPublicAssets = async ({
5252
PUBLISH_DIR,
5353
}: Pick<NetlifyPluginConstants, 'PUBLISH_DIR'>): Promise<void> => {
5454
const src = join(process.cwd(), 'public')
55-
const dist = join(PUBLISH_DIR, 'public')
55+
const dist = PUBLISH_DIR
5656
if (!existsSync(src)) {
5757
return
5858
}
5959

6060
await mkdir(dist, { recursive: true })
61-
await cp(src, dist)
61+
await cp(src, dist, { recursive: true, force: true })
6262
}
6363

6464
/**
@@ -67,9 +67,7 @@ const copyPublicAssets = async ({
6767
export const copyStaticContent = async ({
6868
PUBLISH_DIR,
6969
}: Pick<NetlifyPluginConstants, 'PUBLISH_DIR'>): Promise<void> => {
70-
await Promise.all([
71-
copyStaticPages(join(process.cwd(), BUILD_DIR, '.next'), PUBLISH_DIR),
72-
copyStaticAssets({ PUBLISH_DIR }),
73-
copyPublicAssets({ PUBLISH_DIR }),
74-
])
70+
await copyPublicAssets({ PUBLISH_DIR })
71+
await copyStaticAssets({ PUBLISH_DIR })
72+
await copyStaticPages(join(process.cwd(), BUILD_DIR, '.next'), PUBLISH_DIR)
7573
}

src/build/functions/server.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { nodeFileTrace } from '@vercel/nft'
2-
import { writeFile, rm, mkdir, cp } from 'fs/promises'
2+
import { readFileSync } from 'fs'
3+
import { cp, mkdir, rm, writeFile } from 'fs/promises'
4+
import { join } from 'node:path'
35
import { BUILD_DIR, PLUGIN_DIR, SERVER_HANDLER_DIR, SERVER_HANDLER_NAME } from '../constants.js'
46
import { copyServerContent } from '../content/server.js'
5-
import { join } from 'node:path'
6-
import { readFileSync } from 'fs'
77

88
const pkg = JSON.parse(readFileSync(join(PLUGIN_DIR, 'package.json'), 'utf-8'))
99

@@ -75,6 +75,6 @@ export const createServerHandler = async () => {
7575
// write the root handler file
7676
await writeFile(
7777
join(process.cwd(), SERVER_HANDLER_DIR, `${SERVER_HANDLER_NAME}.js`),
78-
`import handler from './dist/run/handlers/server.js';export default handler;export const config = {path:'/*'}`,
78+
`import handler from './dist/run/handlers/server.js';export default handler`,
7979
)
8080
}

src/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { NetlifyPluginOptions } from '@netlify/build'
2-
import { moveBuildOutput } from './build/move-build-output.js'
32
import { setBuildConfig } from './build/config.js'
43
import { uploadPrerenderedContent } from './build/content/prerendered.js'
54
import { copyStaticContent } from './build/content/static.js'
65
import { createEdgeHandler } from './build/functions/edge.js'
76
import { createServerHandler } from './build/functions/server.js'
7+
import { moveBuildOutput } from './build/move-build-output.js'
88

9-
export const onPreBuild = () => {
10-
setBuildConfig()
9+
export const onPreBuild = ({ netlifyConfig }: NetlifyPluginOptions) => {
10+
setBuildConfig(netlifyConfig)
1111
}
1212

1313
export const onBuild = async ({ constants, utils }: NetlifyPluginOptions) => {

0 commit comments

Comments
 (0)