diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_mise-config_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_mise-config_1.snap.json index 36ebed3..c1e49ee 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_mise-config_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_mise-config_1.snap.json @@ -26,15 +26,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ "." ], @@ -126,23 +117,12 @@ } }, { - "caches": [ - "npm-install" - ], - "commands": [ - { - "cmd": "npm prune --omit=dev" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-bun_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-bun_1.snap.json index 7cc312c..bc4bcd3 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-bun_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-bun_1.snap.json @@ -25,15 +25,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ "." ], @@ -125,24 +116,12 @@ } }, { - "caches": [ - "bun-install" - ], - "commands": [ - { - "cmd": "sh -c 'rm -rf node_modules \u0026\u0026 bun install --production'", - "customName": "rm -rf node_modules \u0026\u0026 bun install --production" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-corepack_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-corepack_1.snap.json index 7af489d..c4c4ad8 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-corepack_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-corepack_1.snap.json @@ -25,15 +25,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ ".", "/root/.cache" @@ -137,23 +128,12 @@ } }, { - "caches": [ - "pnpm-install" - ], - "commands": [ - { - "cmd": "pnpm prune --prod" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-next_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-next_1.snap.json index 469a57b..f88d8b5 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-next_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-next_1.snap.json @@ -29,15 +29,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ "." ], @@ -129,23 +120,12 @@ } }, { - "caches": [ - "npm-install" - ], - "commands": [ - { - "cmd": "npm prune --omit=dev" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm-workspaces_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm-workspaces_1.snap.json index 8f0228f..b2219a0 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm-workspaces_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm-workspaces_1.snap.json @@ -25,15 +25,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ "." ], @@ -133,23 +124,12 @@ } }, { - "caches": [ - "npm-install" - ], - "commands": [ - { - "cmd": "npm prune --omit=dev" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm_1.snap.json index 5a1c5d5..2a5d392 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-npm_1.snap.json @@ -25,15 +25,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ "." ], @@ -125,23 +116,12 @@ } }, { - "caches": [ - "npm-install" - ], - "commands": [ - { - "cmd": "npm prune --omit=dev" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-pnpm-workspaces_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-pnpm-workspaces_1.snap.json index 544d30b..deb6704 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-pnpm-workspaces_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-pnpm-workspaces_1.snap.json @@ -25,15 +25,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ "." ], @@ -137,23 +128,12 @@ } }, { - "caches": [ - "pnpm-install" - ], - "commands": [ - { - "cmd": "pnpm prune --prod" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-turborepo_1.snap.json b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-turborepo_1.snap.json index fb51075..f0d799e 100755 --- a/core/__snapshots__/TestGenerateBuildPlanForExamples_node-turborepo_1.snap.json +++ b/core/__snapshots__/TestGenerateBuildPlanForExamples_node-turborepo_1.snap.json @@ -33,15 +33,6 @@ "step": "packages:mise" }, { - "include": [ - "/app/node_modules" - ], - "step": "prune" - }, - { - "exclude": [ - "node_modules" - ], "include": [ ".", "/root/.cache" @@ -168,23 +159,12 @@ } }, { - "caches": [ - "npm-install" - ], - "commands": [ - { - "cmd": "npm prune --omit=dev" - } - ], "inputs": [ { "step": "install" } ], - "name": "prune", - "variables": { - "NPM_CONFIG_PRODUCTION": "true" - } + "name": "prune" }, { "caches": [ diff --git a/core/providers/node/node.go b/core/providers/node/node.go index 5d1172b..86969eb 100644 --- a/core/providers/node/node.go +++ b/core/providers/node/node.go @@ -66,7 +66,10 @@ func (p *NodeProvider) Plan(ctx *generate.GenerateContext) error { // Prune prune := ctx.NewCommandStep("prune") prune.AddInput(plan.NewStepInput(install.Name())) - p.PruneNodeDeps(ctx, prune) + prune.Secrets = []string{} + if p.shouldPrune(ctx) { + p.PruneNodeDeps(ctx, prune) + } // Build build := ctx.NewCommandStep("build") @@ -87,16 +90,30 @@ func (p *NodeProvider) Plan(ctx *generate.GenerateContext) error { plan.NewStepInput(miseStep.Name(), plan.InputOptions{ Include: miseStep.GetOutputPaths(), }), - plan.NewStepInput(prune.Name(), plan.InputOptions{ - Include: []string{"/app/node_modules"}, // we only wanted the pruned node_modules - }), - plan.NewStepInput(build.Name(), plan.InputOptions{ - Include: buildIncludeDirs, - Exclude: []string{"node_modules"}, - }), - plan.NewLocalInput("."), } + if p.shouldPrune(ctx) { + // If we are pruning, we want to grab the pruned node_modules + // and ignore the node_modules from the install/build steps + ctx.Deploy.Inputs = append(ctx.Deploy.Inputs, + plan.NewStepInput(prune.Name(), plan.InputOptions{ + Include: []string{"/app/node_modules"}, + }), + plan.NewStepInput(build.Name(), plan.InputOptions{ + Include: buildIncludeDirs, + Exclude: []string{"node_modules"}, + }), + ) + } else { + ctx.Deploy.Inputs = append(ctx.Deploy.Inputs, + plan.NewStepInput(build.Name(), plan.InputOptions{ + Include: buildIncludeDirs, + }), + ) + } + + ctx.Deploy.Inputs = append(ctx.Deploy.Inputs, plan.NewLocalInput(".")) + return nil } @@ -135,11 +152,11 @@ func (p *NodeProvider) Build(ctx *generate.GenerateContext, build *generate.Comm } } -func (p *NodeProvider) PruneNodeDeps(ctx *generate.GenerateContext, prune *generate.CommandStepBuilder) { - if ctx.Env.IsConfigVariableTruthy("NO_PRUNE") { - return - } +func (p *NodeProvider) shouldPrune(ctx *generate.GenerateContext) bool { + return ctx.Env.IsConfigVariableTruthy("PRUNE_DEPS") +} +func (p *NodeProvider) PruneNodeDeps(ctx *generate.GenerateContext, prune *generate.CommandStepBuilder) { prune.Variables["NPM_CONFIG_PRODUCTION"] = "true" prune.Secrets = []string{} p.packageManager.PruneDeps(ctx, prune) diff --git a/examples/node-npm/test.json b/examples/node-npm/test.json index f089f73..8ab3463 100644 --- a/examples/node-npm/test.json +++ b/examples/node-npm/test.json @@ -1,5 +1,8 @@ [ { - "expectedOutput": "hello from Node v23.5.0" + "expectedOutput": "hello from Node v23.5.0", + "envs": { + "RAILPACK_PRUNE_DEPS": "true" + } } ]