{"record":{"id":"094efe10b07703a9","repo":"denoland/deno","slug":"invalid-semver-version-please-provide-a-vali","errorCode":null,"errorMessage":"Invalid semver version '{}'. Please provide a valid semver version (e.g., 1.0.0)","messagePattern":"Invalid semver version '(.+?)'\\. Please provide a valid semver version \\(e\\.g\\., 1\\.0\\.0\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/pack/mod.rs","lineNumber":123,"sourceCode":"  for package in packages {\n    // Validate package name format\n    if !package.name.starts_with('@') || !package.name.contains('/') {\n      bail!(\n        \"Invalid package name '{}'. Package name must be in the format '@scope/name'\",\n        package.name\n      );\n    }\n\n    log::info!(\n      \"{} {}\",\n      colors::green(\"Packing\"),\n      colors::intense_blue(&package.name)\n    );\n\n    // Determine version\n    let version = if let Some(ref v) = pack_flags.set_version {\n      if deno_semver::Version::parse_standard(v).is_err() {\n        bail!(\n          \"Invalid semver version '{}'. Please provide a valid semver version (e.g., 1.0.0)\",\n          v\n        );\n      }\n      v.clone()\n    } else {\n      package\n        .config_file\n        .json\n        .version\n        .clone()\n        .with_context(|| {\n          format!(\n            \"Missing version in package '{}'. Add a version field or use --set-version\",\n            package.name\n          )\n        })?\n    };","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/denoland/deno/blob/9ad36f7a2cce60488e6ec52283efb32efddaf93a/cli/tools/pack/mod.rs#L105-L141","documentation":"`deno pack --version <v>` (PackFlags::set_version) validates the override with `deno_semver::Version::parse_standard` before using it. Anything that is not standard semver — `1.x`, `v1.0.0`, `1.0`, `latest` — is rejected with this message.","triggerScenarios":"Passing `--version` a non-semver string: `deno pack --version 1.0`, `--version v2.1.0`, `--version latest`.","commonSituations":"Copying a git tag like `v1.2.3` including the `v` prefix; two-component versions `1.2`; npm dist-tags such as `latest` where no leading `v`/short form is allowed by parse_standard.","solutions":["Use full `MAJOR.MINOR.PATCH` without a `v` prefix: `deno pack --version 1.2.3`.","Pre-release/build metadata is fine if formatted as standard semver: `1.2.3-beta.1`.","If you wanted the version to come from the config, drop `--version` entirely."],"exampleFix":"# before\ndeno pack --version v1.2.3\n# after\ndeno pack --version 1.2.3","handlingStrategy":"validation","validationCode":"// Validate before passing --version to deno pack\nconst SEMVER = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?$/;\nconst v = process.argv[2];\nif (!SEMVER.test(v ?? \"\")) {\n  console.error(`\"${v}\" is not standard semver (use MAJOR.MINOR.PATCH, no 'v' prefix)`);\n  process.exit(1);\n}","typeGuard":"const isStandardSemver = (v: string): boolean =>\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?$/.test(v);","tryCatchPattern":null,"preventionTips":["Strip the leading `v` from git tags before using them as versions.","Always pass three version components (1.2.3, not 1.2).","Dist-tags like `latest` are registry pointers, never versions."],"tags":["pack","semver","version","cli"],"backgroundTag":"invalid-semver","analyzedSha":"9ad36f7a2cce60488e6ec52283efb32efddaf93a","analyzedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-08-31T04:17:50.494Z"}