Skip to content

Commit 279717b

Browse files
authored
v3: pnpm deploy & various fixes for dependency resolution (#1012)
* Don’t swallow some error messages when deploying * Try and resolve dependency versions using pnpm/npm/yarn * Adding some debug logs around dependency resolution * Use npm list instead of npm show to resolve deps * Improve the dependency resolution
1 parent 702d198 commit 279717b

File tree

10 files changed

+272
-322
lines changed

10 files changed

+272
-322
lines changed

.changeset/cuddly-feet-approve.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"trigger.dev": patch
3+
---
4+
5+
Don’t swallow some error messages when deploying

packages/cli-v3/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
"@trigger.dev/core-apps": "workspace:*",
3939
"@trigger.dev/tsconfig": "workspace:*",
4040
"@types/gradient-string": "^1.1.2",
41-
"@types/jsonlines": "^0.1.5",
4241
"@types/mock-fs": "^4.13.1",
4342
"@types/node": "18",
4443
"@types/object-hash": "^3.0.6",
@@ -106,7 +105,6 @@
106105
"import-meta-resolve": "^4.0.0",
107106
"ink": "^4.4.1",
108107
"jsonc-parser": "^3.2.1",
109-
"jsonlines": "^0.1.1",
110108
"liquidjs": "^10.9.2",
111109
"mock-fs": "^5.2.0",
112110
"nanoid": "^4.0.2",
@@ -135,4 +133,4 @@
135133
"engines": {
136134
"node": ">=18.0.0"
137135
}
138-
}
136+
}

packages/cli-v3/src/commands/deploy.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import {
5555
parseNpmInstallError,
5656
} from "../utilities/deployErrors";
5757
import { safeJsonParse } from "../utilities/safeJsonParse";
58+
import { JavascriptProject } from "../utilities/javascriptProject";
5859

5960
const DeployCommandOptions = CommonCommandOptions.extend({
6061
skipTypecheck: z.boolean().default(false),
@@ -423,7 +424,8 @@ async function _deployCommand(dir: string, options: DeployCommandOptions) {
423424
}
424425

425426
const parsedError = finishedDeployment.errorData.stack
426-
? parseBuildErrorStack(finishedDeployment.errorData)
427+
? parseBuildErrorStack(finishedDeployment.errorData) ??
428+
finishedDeployment.errorData.message
427429
: finishedDeployment.errorData.message;
428430

429431
if (typeof parsedError === "string") {
@@ -1118,21 +1120,17 @@ async function compileProject(
11181120
// Get all the required dependencies from the metaOutputs and save them to /tmp/dir/package.json
11191121
const allImports = [...metaOutput.imports, ...entryPointMetaOutput.imports];
11201122

1121-
const externalPackageJson = await readJSONFile(join(config.projectDir, "package.json"));
1123+
const javascriptProject = new JavascriptProject(config.projectDir);
11221124

1123-
const dependencies = await gatherRequiredDependencies(
1124-
allImports,
1125-
config,
1126-
externalPackageJson
1127-
);
1125+
const dependencies = await gatherRequiredDependencies(allImports, config, javascriptProject);
11281126

11291127
const packageJsonContents = {
11301128
name: "trigger-worker",
11311129
version: "0.0.0",
11321130
description: "",
11331131
dependencies,
11341132
scripts: {
1135-
postinstall: externalPackageJson?.scripts?.postinstall,
1133+
...javascriptProject.scripts,
11361134
},
11371135
};
11381136

@@ -1377,7 +1375,7 @@ async function typecheckProject(config: ResolvedConfig, options: DeployCommandOp
13771375
async function gatherRequiredDependencies(
13781376
imports: Metafile["outputs"][string]["imports"],
13791377
config: ResolvedConfig,
1380-
projectPackageJson: any
1378+
project: JavascriptProject
13811379
) {
13821380
const dependencies: Record<string, string> = {};
13831381

@@ -1392,7 +1390,7 @@ async function gatherRequiredDependencies(
13921390
continue;
13931391
}
13941392

1395-
const externalDependencyVersion = (projectPackageJson?.dependencies ?? {})[packageName];
1393+
const externalDependencyVersion = await project.resolve(packageName);
13961394

13971395
if (externalDependencyVersion) {
13981396
dependencies[packageName] = stripWorkspaceFromVersion(externalDependencyVersion);
@@ -1420,10 +1418,9 @@ async function gatherRequiredDependencies(
14201418
dependencies[packageParts.name] = packageParts.version;
14211419
continue;
14221420
} else {
1423-
const externalDependencyVersion = {
1424-
...projectPackageJson?.devDependencies,
1425-
...projectPackageJson?.dependencies,
1426-
}[packageName];
1421+
const externalDependencyVersion = await project.resolve(packageParts.name, {
1422+
allowDev: true,
1423+
});
14271424

14281425
if (externalDependencyVersion) {
14291426
dependencies[packageParts.name] = externalDependencyVersion;

packages/cli-v3/src/commands/dev.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ function useDev({
561561
} else if (e instanceof UncaughtExceptionError) {
562562
const parsedBuildError = parseBuildErrorStack(e.originalError);
563563

564-
if (typeof parsedBuildError !== "string") {
564+
if (parsedBuildError && typeof parsedBuildError !== "string") {
565565
logESMRequireError(
566566
parsedBuildError,
567567
configPath

packages/cli-v3/src/utilities/deployErrors.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function errorIsErrorLike(error: unknown): error is Error {
2020
);
2121
}
2222

23-
export function parseBuildErrorStack(error: unknown): BuildError {
23+
export function parseBuildErrorStack(error: unknown): BuildError | undefined {
2424
if (typeof error === "string") {
2525
return error;
2626
}
@@ -48,8 +48,6 @@ export function parseBuildErrorStack(error: unknown): BuildError {
4848
return error.message;
4949
}
5050
}
51-
52-
return "Unknown error";
5351
}
5452

5553
export function logESMRequireError(parsedError: ESMRequireError, resolvedConfig: ReadConfigResult) {

packages/cli-v3/src/utilities/getUserPackageManager.spec.ts

Lines changed: 0 additions & 114 deletions
This file was deleted.

packages/cli-v3/src/utilities/getUserPackageManager.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import pathModule from "path";
2-
import { pathExists } from "./fileSystem.js";
1+
import { findUp } from "find-up";
32

43
export type PackageManager = "npm" | "pnpm" | "yarn";
54

@@ -38,8 +37,8 @@ async function detectPackageManagerFromArtifacts(path: string): Promise<PackageM
3837
];
3938

4039
for (const { name, pm } of packageFiles) {
41-
const exists = await pathExists(pathModule.join(path, name));
42-
if (exists) {
40+
const foundPath = await findUp(name, { cwd: path });
41+
if (typeof foundPath === "string") {
4342
return pm;
4443
}
4544
}

0 commit comments

Comments
 (0)