feat(src/djinit/creators): add Vite support for frontend bundling
Introduce Vite configuration generation and propagate the use_vite flag across templates to enable modern frontend tooling. New Features- Add `create_vite_config` method to generate `vite.config.ts`. - Propagate `use_vite` metadata to all relevant context dictionaries. - Include Vite usage in Dockerfile, requirements.txt, pyproject.toml, and CI pipelines. Enhancements - Update context preparation to embed Vite flag alongside Tailwind and HTMX. - Refine template documentation to mention Tailwind, HTMX, and Vite integration. Bug Fixes - None.
This commit is contained in:
2 files changed
+24
-1
No files matched your search
@@ -77,6 +77,7 @@ class FileCreator(BaseService):
|
|||||||
|
|
||||||
secret_key = generate_secret_key()
|
secret_key = generate_secret_key()
|
||||||
dev_context = {"secret_key": secret_key}
|
dev_context = {"secret_key": secret_key}
|
||||||
|
dev_context["use_vite"] = self.metadata.get("use_vite", False)
|
||||||
|
|
||||||
# Prepare context for base.py with full AppConfig paths
|
# Prepare context for base.py with full AppConfig paths
|
||||||
base_settings_context = base_context.copy()
|
base_settings_context = base_context.copy()
|
||||||
@@ -88,9 +89,10 @@ class FileCreator(BaseService):
|
|||||||
for name in base_settings_context["app_names"]
|
for name in base_settings_context["app_names"]
|
||||||
]
|
]
|
||||||
|
|
||||||
# Add Tailwind and HTMX to context
|
# Add Tailwind, HTMX, and Vite to context
|
||||||
base_settings_context["use_tailwind"] = self.metadata.get("use_tailwind", False)
|
base_settings_context["use_tailwind"] = self.metadata.get("use_tailwind", False)
|
||||||
base_settings_context["use_htmx"] = self.metadata.get("use_htmx", False)
|
base_settings_context["use_htmx"] = self.metadata.get("use_htmx", False)
|
||||||
|
base_settings_context["use_vite"] = self.metadata.get("use_vite", False)
|
||||||
|
|
||||||
for filename, context in [
|
for filename, context in [
|
||||||
("base.py", base_settings_context),
|
("base.py", base_settings_context),
|
||||||
@@ -136,6 +138,7 @@ class FileCreator(BaseService):
|
|||||||
"module_name": self.module_name,
|
"module_name": self.module_name,
|
||||||
"database_type": self.metadata.get("database_type", "postgresql"),
|
"database_type": self.metadata.get("database_type", "postgresql"),
|
||||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||||
|
"use_vite": self.metadata.get("use_vite", False),
|
||||||
}
|
}
|
||||||
self._render_and_create_file(
|
self._render_and_create_file(
|
||||||
"Dockerfile",
|
"Dockerfile",
|
||||||
@@ -152,6 +155,18 @@ class FileCreator(BaseService):
|
|||||||
"Created .dockerignore file",
|
"Created .dockerignore file",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def create_vite_config(self) -> None:
|
||||||
|
context = {
|
||||||
|
"module_name": self.module_name,
|
||||||
|
"project_name": self.project_name,
|
||||||
|
}
|
||||||
|
self._render_and_create_file(
|
||||||
|
"vite.config.ts",
|
||||||
|
"project/vite.config.ts-tpl",
|
||||||
|
context,
|
||||||
|
"Created vite.config.ts for Vite frontend bundling",
|
||||||
|
)
|
||||||
|
|
||||||
def create_gitignore(self) -> None:
|
def create_gitignore(self) -> None:
|
||||||
self._render_and_create_file(".gitignore", "project/gitignore-tpl", {}, "Created .gitignore file")
|
self._render_and_create_file(".gitignore", "project/gitignore-tpl", {}, "Created .gitignore file")
|
||||||
|
|
||||||
@@ -161,6 +176,7 @@ class FileCreator(BaseService):
|
|||||||
"database_type": self.metadata.get("database_type", "postgresql"),
|
"database_type": self.metadata.get("database_type", "postgresql"),
|
||||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||||
"use_htmx": self.metadata.get("use_htmx", False),
|
"use_htmx": self.metadata.get("use_htmx", False),
|
||||||
|
"use_vite": self.metadata.get("use_vite", False),
|
||||||
}
|
}
|
||||||
self._render_and_create_file(
|
self._render_and_create_file(
|
||||||
"requirements.txt",
|
"requirements.txt",
|
||||||
@@ -204,6 +220,7 @@ class FileCreator(BaseService):
|
|||||||
"use_database_url": metadata.get("use_database_url", True),
|
"use_database_url": metadata.get("use_database_url", True),
|
||||||
"use_tailwind": metadata.get("use_tailwind", False),
|
"use_tailwind": metadata.get("use_tailwind", False),
|
||||||
"use_htmx": metadata.get("use_htmx", False),
|
"use_htmx": metadata.get("use_htmx", False),
|
||||||
|
"use_vite": metadata.get("use_vite", False),
|
||||||
}
|
}
|
||||||
self._render_and_create_file(
|
self._render_and_create_file(
|
||||||
"pyproject.toml",
|
"pyproject.toml",
|
||||||
@@ -406,6 +423,7 @@ class FileCreator(BaseService):
|
|||||||
"use_database_url": self.metadata.get("use_database_url", True),
|
"use_database_url": self.metadata.get("use_database_url", True),
|
||||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||||
"use_htmx": self.metadata.get("use_htmx", False),
|
"use_htmx": self.metadata.get("use_htmx", False),
|
||||||
|
"use_vite": self.metadata.get("use_vite", False),
|
||||||
}
|
}
|
||||||
workflow_file = os.path.join(github_dir, "ci.yml")
|
workflow_file = os.path.join(github_dir, "ci.yml")
|
||||||
self._render_and_create_file(
|
self._render_and_create_file(
|
||||||
@@ -424,6 +442,7 @@ class FileCreator(BaseService):
|
|||||||
"use_database_url": self.metadata.get("use_database_url", True),
|
"use_database_url": self.metadata.get("use_database_url", True),
|
||||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||||
"use_htmx": self.metadata.get("use_htmx", False),
|
"use_htmx": self.metadata.get("use_htmx", False),
|
||||||
|
"use_vite": self.metadata.get("use_vite", False),
|
||||||
}
|
}
|
||||||
self._render_and_create_file(
|
self._render_and_create_file(
|
||||||
".gitlab-ci.yml",
|
".gitlab-ci.yml",
|
||||||
@@ -458,6 +477,7 @@ class FileCreator(BaseService):
|
|||||||
"database_type": self.metadata.get("database_type", "postgresql"),
|
"database_type": self.metadata.get("database_type", "postgresql"),
|
||||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||||
"use_htmx": self.metadata.get("use_htmx", False),
|
"use_htmx": self.metadata.get("use_htmx", False),
|
||||||
|
"use_vite": self.metadata.get("use_vite", False),
|
||||||
},
|
},
|
||||||
"cicd": {
|
"cicd": {
|
||||||
"github": self.metadata.get("use_github_actions", False),
|
"github": self.metadata.get("use_github_actions", False),
|
||||||
|
|||||||
@@ -112,6 +112,9 @@ class SetupCreator:
|
|||||||
for step_func in utility_steps:
|
for step_func in utility_steps:
|
||||||
step_func()
|
step_func()
|
||||||
|
|
||||||
|
if self.metadata.get("use_vite", False):
|
||||||
|
self.file_creator.create_vite_config()
|
||||||
|
|
||||||
UIFormatter.print_success("Created all utility files successfully!")
|
UIFormatter.print_success("Created all utility files successfully!")
|
||||||
|
|
||||||
def _create_cicd_pipelines(self) -> None:
|
def _create_cicd_pipelines(self) -> None:
|
||||||
|
|||||||
Reference in new issue
Block a user