fix 3.0.0 update warning (#1308)

* Attempt to fix false package mismatch warnings

* Add changeset

* Add ability to test update checks in prerelease packages

* Resolve the trigger.dev package based on the package.json dir

* Try this

* Don’t use the version module, just resolve the packageJson

* One more dirname

* Comment

* Remove the version export because we aren’t using it anymore
This commit is contained in:
Eric Allam
2024-09-16 18:03:16 +01:00
committed by GitHub
parent 94698ad13c
commit 3aa5811790
3 changed files with 47 additions and 6 deletions
+8
View File
@@ -0,0 +1,8 @@
---
"@trigger.dev/sdk": patch
"trigger.dev": patch
"@trigger.dev/build": patch
"@trigger.dev/core": patch
---
Fixing false-positive package version mismatches
+39 -5
View File
@@ -1,7 +1,7 @@
import { confirm, intro, isCancel, log, outro } from "@clack/prompts";
import { Command } from "commander";
import { detectPackageManager, installDependencies } from "nypm";
import { resolve } from "path";
import { basename, dirname, resolve } from "path";
import { PackageJson, readPackageJSON, resolvePackageJSON } from "pkg-types";
import { z } from "zod";
import { CommonCommandOptions, OutroCommandError, wrapCommandAction } from "../cli/common.js";
@@ -12,6 +12,7 @@ import { logger } from "../utilities/logger.js";
import { spinner } from "../utilities/windows.js";
import { VERSION } from "../version.js";
import { hasTTY } from "std-env";
import nodeResolve from "resolve";
export const UpdateCommandOptions = CommonCommandOptions.pick({
logLevel: true,
@@ -54,7 +55,7 @@ export async function updateTriggerPackages(
let hasOutput = false;
const cliVersion = VERSION;
if (cliVersion.startsWith("0.0.0")) {
if (cliVersion.startsWith("0.0.0") && process.env.ENABLE_PRERELEASE_UPDATE_CHECKS !== "1") {
return false;
}
@@ -83,7 +84,9 @@ export async function updateTriggerPackages(
hasOutput = true;
}
const triggerDependencies = getTriggerDependencies(packageJson);
const triggerDependencies = await getTriggerDependencies(packageJson, packageJsonPath);
logger.debug("Resolved trigger deps", { triggerDependencies });
function getVersionMismatches(
deps: Dependency[],
@@ -268,7 +271,10 @@ type Dependency = {
version: string;
};
function getTriggerDependencies(packageJson: PackageJson): Dependency[] {
async function getTriggerDependencies(
packageJson: PackageJson,
packageJsonPath: string
): Promise<Dependency[]> {
const deps: Dependency[] = [];
for (const type of ["dependencies", "devDependencies"] as const) {
@@ -291,13 +297,41 @@ function getTriggerDependencies(packageJson: PackageJson): Dependency[] {
continue;
}
deps.push({ type, name, version });
const $version = await tryResolveTriggerPackageVersion(name, packageJsonPath);
deps.push({ type, name, version: $version ?? version });
}
}
return deps;
}
async function tryResolveTriggerPackageVersion(
name: string,
packageJsonPath: string
): Promise<string | undefined> {
try {
const resolvedPath = nodeResolve.sync(name, {
basedir: dirname(packageJsonPath),
});
logger.debug(`Resolved ${name} package version path`, { name, resolvedPath });
// IMPORTANT: keep the two dirname calls, as the first one resolves the nested package.json inside dist/commonjs or dist/esm
const { packageJson } = await getPackageJson(dirname(dirname(resolvedPath)));
if (packageJson.version) {
logger.debug(`Resolved ${name} package version`, { name, version: packageJson.version });
return packageJson.version;
}
return;
} catch (error) {
logger.debug("Failed to resolve package version", { name, error });
return undefined;
}
}
function mutatePackageJsonWithUpdatedPackages(
packageJson: PackageJson,
depsToUpdate: Dependency[],
-1
View File
@@ -15,7 +15,6 @@ else
fi
# Run your commands
rm .changeset/pre.json
echo "Running: pnpm exec changeset version --snapshot $version"
pnpm exec changeset version --snapshot $version