From 162d3b86be40a1bacd7f6d9fc41ee0644850c1fc Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 11 Nov 2025 11:19:56 -0500 Subject: [PATCH 1/3] swap shopify_function dep from template to local tarball --- .../src/cli/services/generate/extension.ts | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/app/src/cli/services/generate/extension.ts b/packages/app/src/cli/services/generate/extension.ts index 3a47ee52d64..7bc32796e9f 100644 --- a/packages/app/src/cli/services/generate/extension.ts +++ b/packages/app/src/cli/services/generate/extension.ts @@ -16,7 +16,7 @@ import { import {recursiveLiquidTemplateCopy} from '@shopify/cli-kit/node/liquid' import {renderTasks} from '@shopify/cli-kit/node/ui' import {downloadGitRepository} from '@shopify/cli-kit/node/git' -import {fileExists, inTemporaryDirectory, mkdir, moveFile, removeFile, glob} from '@shopify/cli-kit/node/fs' +import {fileExists, inTemporaryDirectory, mkdir, moveFile, removeFile, glob, writeFile} from '@shopify/cli-kit/node/fs' import {joinPath, relativizePath} from '@shopify/cli-kit/node/path' import {slugify} from '@shopify/cli-kit/common/string' import {nonRandomUUID} from '@shopify/cli-kit/node/crypto' @@ -183,6 +183,25 @@ async function functionExtensionInit({ taskList.push({ title: 'Installing additional dependencies', task: async () => { + // Update the @shopify/shopify_function version in the template's package.json + const extensionPackageJsonPath = joinPath(directory, 'package.json') + const packageJson = await readAndParsePackageJson(extensionPackageJsonPath) + + if (packageJson.dependencies?.['@shopify/shopify_function']) { + // Path to local package relative to user's home directory + const homeDir = process.env.HOME || process.env.USERPROFILE + const localPackagePath = joinPath( + homeDir!, + 'src', + 'github.com', + 'Shopify', + 'shopify-function-javascript', + 'shopify-shopify_function-2.0.1-rc.0.tgz', + ) + packageJson.dependencies['@shopify/shopify_function'] = `file:${localPackagePath}` + await writeFile(extensionPackageJsonPath, JSON.stringify(packageJson, null, 2)) + } + // We need to run install once to setup the workspace correctly if (app.usesWorkspaces) { await installNodeModules({packageManager: app.packageManager, directory: app.directory}) From f840ce47d993497543b38e89d09b8d43e5433056 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 11 Nov 2025 11:55:56 -0500 Subject: [PATCH 2/3] use shopify_function snapshot directly --- packages/app/src/cli/services/generate/extension.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/app/src/cli/services/generate/extension.ts b/packages/app/src/cli/services/generate/extension.ts index 7bc32796e9f..563c3ab1867 100644 --- a/packages/app/src/cli/services/generate/extension.ts +++ b/packages/app/src/cli/services/generate/extension.ts @@ -188,17 +188,7 @@ async function functionExtensionInit({ const packageJson = await readAndParsePackageJson(extensionPackageJsonPath) if (packageJson.dependencies?.['@shopify/shopify_function']) { - // Path to local package relative to user's home directory - const homeDir = process.env.HOME || process.env.USERPROFILE - const localPackagePath = joinPath( - homeDir!, - 'src', - 'github.com', - 'Shopify', - 'shopify-function-javascript', - 'shopify-shopify_function-2.0.1-rc.0.tgz', - ) - packageJson.dependencies['@shopify/shopify_function'] = `file:${localPackagePath}` + packageJson.dependencies['@shopify/shopify_function'] = '0.0.0-snapshot-20251111164106' await writeFile(extensionPackageJsonPath, JSON.stringify(packageJson, null, 2)) } From b05fad479aa7bd984b48d3571eed05f606551c0e Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 11 Nov 2025 12:05:09 -0500 Subject: [PATCH 3/3] workaround for tests --- packages/app/src/cli/services/generate/extension.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/app/src/cli/services/generate/extension.ts b/packages/app/src/cli/services/generate/extension.ts index 563c3ab1867..c1f244354e9 100644 --- a/packages/app/src/cli/services/generate/extension.ts +++ b/packages/app/src/cli/services/generate/extension.ts @@ -185,11 +185,13 @@ async function functionExtensionInit({ task: async () => { // Update the @shopify/shopify_function version in the template's package.json const extensionPackageJsonPath = joinPath(directory, 'package.json') - const packageJson = await readAndParsePackageJson(extensionPackageJsonPath) + if (await fileExists(extensionPackageJsonPath)) { + const packageJson = await readAndParsePackageJson(extensionPackageJsonPath) - if (packageJson.dependencies?.['@shopify/shopify_function']) { - packageJson.dependencies['@shopify/shopify_function'] = '0.0.0-snapshot-20251111164106' - await writeFile(extensionPackageJsonPath, JSON.stringify(packageJson, null, 2)) + if (packageJson.dependencies?.['@shopify/shopify_function']) { + packageJson.dependencies['@shopify/shopify_function'] = '0.0.0-snapshot-20251111164106' + await writeFile(extensionPackageJsonPath, JSON.stringify(packageJson, null, 2)) + } } // We need to run install once to setup the workspace correctly