@vzn/vx 0.0.269 → 0.0.271

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vzn/vx",
3
- "version": "0.0.269",
3
+ "version": "0.0.271",
4
4
  "description": "A fast, correct task runner and build cache for JavaScript monorepos.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -17,10 +17,10 @@
17
17
  "node": ">=18"
18
18
  },
19
19
  "optionalDependencies": {
20
- "@vzn/vx-linux-x64": "0.0.269",
21
- "@vzn/vx-linux-arm64": "0.0.269",
22
- "@vzn/vx-darwin-x64": "0.0.269",
23
- "@vzn/vx-darwin-arm64": "0.0.269"
20
+ "@vzn/vx-linux-x64": "0.0.271",
21
+ "@vzn/vx-linux-arm64": "0.0.271",
22
+ "@vzn/vx-darwin-x64": "0.0.271",
23
+ "@vzn/vx-darwin-arm64": "0.0.271"
24
24
  },
25
25
  "dependencies": {
26
26
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
package/src/cli/show.ts CHANGED
@@ -34,6 +34,9 @@ export function parseShowArgs(args: readonly string[]): ShowArgs {
34
34
  else if (a.startsWith('--format=')) format = a.slice('--format='.length)
35
35
  else if (a.startsWith('-'))
36
36
  return { ...out, error: `unknown flag: ${a}${flagHint('show', a)}${seeHelp('show')}` }
37
+ else if (out.target === 'project')
38
+ // Nx's spelling: `nx show project <name>`.
39
+ return { ...out, error: `\`nx show project ${a}\` is \`vx show ${a}\` here` }
37
40
  else if (out.target !== undefined)
38
41
  return { ...out, error: `unexpected argument: ${a}${seeHelp('show')}` }
39
42
  // An empty name is a part of every name: its "did you mean" listed the
@@ -103,8 +106,10 @@ export async function showCmd(args: readonly string[]): Promise<number> {
103
106
  const names = new Set<string>()
104
107
  for (const p of projects.values())
105
108
  for (const t of Object.keys(p.config.tasks ?? {})) names.add(t)
109
+ // `nx show projects` lists them; here a bare `vx show` does.
110
+ const nx = projectName === 'projects' ? ' (`nx show projects` is `vx show` here)' : ''
106
111
  throw new UserError(
107
- `unknown project or task: "${projectName}"${suggest(projectName!, [...byName.keys(), ...names])}`,
112
+ `unknown project or task: "${projectName}"${nx}${suggest(projectName!, [...byName.keys(), ...names])}`,
108
113
  )
109
114
  }
110
115
  process.stdout.write(renderTaskAcross(root, declaring, projectName!, parsed.format))
@@ -216,9 +216,17 @@ export async function prepareRun(options: RunOptions, log: Logger): Promise<Prep
216
216
  // across the whole workspace — but when EVERY spec is anchored, the
217
217
  // anchors alone are the scope and nothing else needs its config
218
218
  // evaluated.
219
+ // `vx run //#lint` is Turbo's `turbo run //#lint`: the root project's
220
+ // task, the root named by its package.json name here (D-39).
221
+ const root = path.resolve(workspaceRoot)
222
+ const rootName = projectMetas.find((m) => path.resolve(m.dir) === root)?.name
223
+ const tasks =
224
+ rootName === undefined
225
+ ? options.tasks
226
+ : options.tasks.map((t) => (t.startsWith('//#') ? `${rootName}#${t.slice(3)}` : t))
219
227
  const anchored: string[] = []
220
228
  let hasBare = false
221
- for (const spec of options.tasks) {
229
+ for (const spec of tasks) {
222
230
  const hashIdx = spec.indexOf('#')
223
231
  if (hashIdx > 0) anchored.push(spec.slice(0, hashIdx))
224
232
  else hasBare = true
@@ -305,8 +313,8 @@ export async function prepareRun(options: RunOptions, log: Logger): Promise<Prep
305
313
  ? options.projects.filter((p) => projects.has(p))
306
314
  : [...projects.keys()]
307
315
 
308
- const requested = expandRequested(options.tasks, candidateProjects, projects)
309
- let unresolvedTasks = unresolvedRequests(options.tasks, candidateProjects, projects)
316
+ const requested = expandRequested(tasks, candidateProjects, projects)
317
+ let unresolvedTasks = unresolvedRequests(tasks, candidateProjects, projects)
310
318
  if (options.selectedByDiff === true && unresolvedTasks.some((t) => !t.includes('#'))) {
311
319
  // A name a loaded project declares is no typo, whether or not the load
312
320
  // was whole: an unaffected dependency loaded for the closure declared