Skip to content

Commit

Permalink
fix: node18 support for netlify/build (#4726)
Browse files Browse the repository at this point in the history
* fix: node18 support for netlify/build

* chore: update snapshots due to new serialization

* chore: cleanup 🧹

* chore: feature flag change
  • Loading branch information
Lukas Holzer authored Nov 29, 2022
1 parent ee3a0dc commit 28347ca
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,29 @@ const tStartPlugins = async function ({ pluginsOptions, buildDir, childEnv, logs
logIncompatiblePlugins(logs, pluginsOptions)

const childProcesses = await Promise.all(
pluginsOptions.map(({ pluginDir, nodePath }) => startPlugin({ pluginDir, nodePath, buildDir, childEnv })),
pluginsOptions.map(({ pluginDir, nodePath }) =>
startPlugin({ pluginDir, nodePath, buildDir, childEnv, featureFlags }),
),
)
return { childProcesses }
}

export const startPlugins = measureDuration(tStartPlugins, 'start_plugins')

const startPlugin = async function ({ pluginDir, nodePath, buildDir, childEnv }) {
const childProcess = execaNode(CHILD_MAIN_FILE, {
const startPlugin = async function ({ pluginDir, nodePath, buildDir, childEnv, featureFlags }) {
const childProcess = execaNode(CHILD_MAIN_FILE, [], {
cwd: buildDir,
preferLocal: true,
localDir: pluginDir,
nodePath,
execPath: nodePath,
env: childEnv,
extendEnv: false,
serialization: 'advanced',
// Feature flag: https://app.launchdarkly.com/default/production/features/netlify_build_use_json_serialization_for_plugin_ipc/targeting
// TODO: remove feature flag once fully rolled out
...(!featureFlags.netlify_build_use_json_serialization_for_plugin_ipc && {
serialization: 'advanced',
}),
})

try {
Expand Down
6 changes: 1 addition & 5 deletions packages/build/tests/plugins/snapshots/tests.js.md
Original file line number Diff line number Diff line change
Expand Up @@ -2788,14 +2788,10 @@ Generated by [AVA](https://avajs.dev).
CACHE_DIR: '.netlify/cache',␊
IS_LOCAL: true,␊
NETLIFY_BUILD_VERSION: '1.0.0',␊
SITE_ID: undefined,␊
NETLIFY_API_TOKEN: undefined,␊
NETLIFY_API_HOST: 'api.netlify.com',␊
INTERNAL_FUNCTIONS_SRC: '.netlify/functions-internal',␊
INTERNAL_EDGE_FUNCTIONS_SRC: '.netlify/edge-functions',␊
PUBLISH_DIR: '.',␊
FUNCTIONS_SRC: undefined,␊
EDGE_FUNCTIONS_SRC: undefined␊
PUBLISH_DIR: '.'␊
}␊
-> inputs: { some_input: 'some string' }␊
Expand Down
Binary file modified packages/build/tests/plugins/snapshots/tests.js.snap
Binary file not shown.
8 changes: 7 additions & 1 deletion packages/build/tests/plugins/tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,12 @@ test('Does not transpile already transpiled local plugins', async (t) => {
})

test('Plugins which export a factory function receive the inputs and a metadata object', async (t) => {
const output = await new Fixture('./fixtures/dynamic_plugin').runWithBuild()
const output = await new Fixture('./fixtures/dynamic_plugin')
.withFlags({
featureFlags: {
netlify_build_use_json_serialization_for_plugin_ipc: true,
},
})
.runWithBuild()
t.snapshot(normalizeOutput(output))
})

0 comments on commit 28347ca

Please sign in to comment.