cli
cli copied to clipboard
feat: allow customization of the supabase root directory name and config paths
Is your feature request related to a problem? Please describe.
I have a monorepo that has a very specific naming structure with /apps and /libs folders. The option for --workdir is great when initializing a new project, however I would love to specify the name of the root directory alongside this.
Describe the solution you'd like
Having a cli flag for --rootname <folder name> would be great.
Describe alternatives you've considered
The alternative is to place a parent folder with the desired name before initializing a project. Eg: apps/testproject/supabase.
Something like this is required for multiple projects to exist within a monorepo.
Additional context
This appears to currently be hardcoded in internal/utils/misc.go.
I am unsure whether other considerations are needed such as an indicator for what is a supabase directory or not. Maybe the CLI can automatically detect this based off --workdir or the contents of the cwd.
Do you mean to customize like apps/testproject/custom-supabase? That wouldn't be possible because a lot of our platform's GitHub integrations depend on a directory named supabase.
If you mean apps/testproject/supabase, I think it's already supported with supabase init --workdir apps/testproject flag.
Yes I mean apps/testpropject/custom-supabase - this would be great. Maybe this can be accomplished by having the directory name specified in the config.toml instead of assumed to be supabase always?
project_id already exists in the config.toml, I assume to combat some of these issues already. Why not allow root_name or something similar as well?
config.toml lives inside supabase directory though. How would you suggest we find the right config.toml file if we support custom-supabase directory?
@sweatybridge I'm also interested in the possibility to place Supabase directories anywhere I want in my project.
Next.JS docs encourage a structure where everything is in the src or app folder, and the root directory is only used for config files.
I can imagine a supabase.config.toml, or supabase.config.ts, or a .supabase directory in the root (personally prefer the first solution) where you would provide the paths of supabase stuff!
I see, so perhaps a --config <path-to-toml> flag that can be passed to CLI to override the default location of supabase/config.toml.
Within config.toml, users can declare path overrides for other directories relative to the location of config.toml. For eg.
workdir = '..'
[migrations]
path = './migrations/*.sql'
[seed]
path = './seed.sql'
[functions.slug]
path = '../src/index.ts'
I see, so perhaps a
--config <path-to-toml>flag that can be passed to CLI to override the default location ofsupabase/config.toml.Within
config.toml, users can declare path overrides for other directories relative to the location ofconfig.toml. For eg.workdir = '..' [migrations] path = './migrations/*.sql' [seed] path = './seed.sql' [functions.slug] path = '../src/index.ts'
This could indeed be handy. I using a monorepo for multiple identical apps with the same supabase setup and would like to have separate config (with different project_id) for each project, but use the same migrations/seed etc. This would probably do the job.