# npm run dev is a long-running program

> Understand why npm run dev is a long-running process and how to stop it with ctrl-c so the dev server starts back on port 3000 instead of 3001.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2022-04-15 | Topics: [Node.js](https://flaviocopes.com/tags/node/) | Canonical: https://flaviocopes.com/npm-run-dev-long-running-program/

I got asked this question: 

> Each time I run `npm run dev` I get a different localhost port. First it was 3000. Then I ran it again and got port 3001. Then I ran it again and got port 3002. How do we force it to use port 3000?

When working on a website locally, you use the command `npm run dev` to start the development server.

This is a common practice in [Web Development](https://flaviocopes.com/roadmap-web-developer-2022/), and all tools seem to converge to this program, for example [Astro](https://flaviocopes.com/astro-introduction/) and [Next.js](https://flaviocopes.com/nextjs/) and many others.

Each time you run this command, it's a long-running process. It does not end automatically

For example you run the [Astro](https://flaviocopes.com/astro-introduction/) dev server, and it starts listening on port `3000`:

![Terminal showing Astro dev server running on localhost:3000 after npm run dev command](https://flaviocopes.com/images/npm-run-dev-long-running-program/Screen_Shot_2022-04-12_at_09.16.47.png)

Then you open **another** [terminal](https://flaviocopes.com/bash/) and you run `npm run dev` again, this time you got the server running on port `3001`:

![Terminal showing Astro dev server running on localhost:3001 when port 3000 was already occupied](https://flaviocopes.com/images/npm-run-dev-long-running-program/Screen_Shot_2022-04-12_at_09.18.05.png)

So now you have the same app running on

http://localhost:3000

and

http://localhost:3001

You need to terminate both processes typing `ctrl-c` in your keyboard while in the terminal, so no process is keeping the `3000` port busy, and nothing appears in the browser when you try to open http://localhost:3000

Then you can run `npm run dev` again and it will automatically start on port `3000`, because that's free.

Any time you make a change in your project (for example because you have to `npm install` some package) you're going to terminate the dev server with `ctrl-c`, then you start it again.
