vitejs / vite

Next generation frontend tooling. It's fast!
http://vite.dev
MIT License
68.14k stars 6.14k forks source link

Start on multiple hosts #16350

Open boindil opened 6 months ago

boindil commented 6 months ago

Description

It seems as if it is not possible to start using multiple IPs/hosts. I've tried separating by comma, but thats throwing an error. As of now it seems that it's only possible to use one host or all ...

Suggested solution

add support for multiple hosts (perferrably as array: host: string | boolean | array).

Alternative

No response

Additional context

No response

Validations

bluwy commented 6 months ago

Can you explain why you want to start on multiple host? Node.js createServer only supports starting on one host (unless DNS could resolve multiple different hosts to this one).

tszyuloveyou commented 5 months ago

Can you explain why you want to start on multiple host? Node.js createServer only supports starting on one host (unless DNS could resolve multiple different hosts to this one).

multiple sub-domain, eg laravel route support multiple domain and php artisan serve not support ssl, so just can use vite/apache to run ssl to dev

bluwy commented 5 months ago

I suppose we can call .listen() multiple times to support multiple hosts, but it doesn't seem like a common usecase. There's the same discussion in webpack: https://github.com/webpack/webpack-dev-server/issues/400

KevsRepos commented 5 months ago

I am currently facing the same issue. The app will run on multiple subdomains in production and I need to replicate this for development.

noyoliel-devocean commented 4 months ago

facing the same issue. I would like to run an instance for each of the environments: mock data environment, dev environment and production environment simultaneously Each environment is using HTTPS protocol and runs on port 443 with different host names

MarcusCaspeco commented 1 day ago

I have a use case for this as well (originally reported in https://github.com/vitejs/vite/issues/18469)

TLDR: I want vite to run on IPv4 (127.0.0.1) and IPv6 (::1) simultaneously to make it easier for us to use a custom domain for local development (e.g. local.example.com points to either 127.0.0.1 or ::1, but we don't know if the developer uses IPv4 or IPv6 on their machine, local.example.com can use IPv4 while localhost uses IPv6, leading to a mismatch)

My workaround ended up being this, so it's still just listening on a single host, but we're smarter about how to pick it:

const { family } = await dns.promises.lookup("local.example.com");

export default defineConfig({
    plugins: [tsconfigPaths(), react()],
    server: {
        port: 3000,
        host: family === 6 ? "::1" : "127.0.0.1",
    },
});