cli icon indicating copy to clipboard operation
cli copied to clipboard

support for running nitro tasks

Open IlyaSemenov opened this issue 5 months ago • 3 comments

Problem

As a full-stack Nuxt developer, I would like to have a way to execute commands within Nuxt's compilation context (with all imports and aliases functioning identically to Nuxt server code). A common use case would be running database migration scripts with arguments (e.g., migrate up, migrate rollback). Another example is running a development-time script to populate/update server assets (e.g. download and parse some external database, using common code and types under server/).

Current workaround

Currently, what I do is:

  1. Create a special API endpoint (e.g., /api/scripts/migrate)
  2. Make it parse HTTP POST data to handle migration commands
  3. Add security with a secret token (disable checks in dev mode for convenience)
  4. Create a npm script that hardcodes certain port:
{
  "scripts": {
    "migrate": "curl localhost:3000/api/scripts/migrate -d"
  }
}

This approach is cumbersome and introduces unnecessary complexity.

Proposed solution

  • In dev mode: nuxt run migrate -- up (executing server/scripts/migrate.ts)
  • In production mode: nuxt build would either compile each script to a separate entrypoint (such as .output/scripts/migrate.js), or perhaps the single server.js could run scripts with node .output/server.js run migrate -- up.

I had long assumed https://github.com/nuxt/cli/issues/62 was meant to cover this use case, only to discover (after its closing) that it never actually had ;-)

Additional information

  • [ ] Would you be willing to help implement this feature?
  • [ ] Could this feature be implemented as a module?

Final checks

IlyaSemenov avatar Jul 28 '25 06:07 IlyaSemenov

I think you are looking for: https://nitro.build/guide/tasks

OrbisK avatar Jul 28 '25 08:07 OrbisK

Maybe I am, but I don't think this is exposed in Nuxt, or is it?

% pnpm nuxt task list
Nuxt CLI (nuxi v3.23.0)
...
 ERROR  Unknown command task

The Nitro tasks are also quite limited (e.g. no production build runners at the moment), but if Nuxt at least re-exposed them, that would be a great start.

IlyaSemenov avatar Jul 28 '25 09:07 IlyaSemenov

that would be a nice idea!

I'd like to see them stabilised first (so the API wouldn't change - cc: @pi0) and yes, being able to run tasks on build/deploy would be great.

this is how I currently work around that issue on my own site

danielroe avatar Jul 28 '25 11:07 danielroe