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()
|
||||
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
|
||||
base_settings_context = base_context.copy()
|
||||
@@ -88,9 +89,10 @@ class FileCreator(BaseService):
|
||||
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_htmx"] = self.metadata.get("use_htmx", False)
|
||||
base_settings_context["use_vite"] = self.metadata.get("use_vite", False)
|
||||
|
||||
for filename, context in [
|
||||
("base.py", base_settings_context),
|
||||
@@ -136,6 +138,7 @@ class FileCreator(BaseService):
|
||||
"module_name": self.module_name,
|
||||
"database_type": self.metadata.get("database_type", "postgresql"),
|
||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||
"use_vite": self.metadata.get("use_vite", False),
|
||||
}
|
||||
self._render_and_create_file(
|
||||
"Dockerfile",
|
||||
@@ -152,6 +155,18 @@ class FileCreator(BaseService):
|
||||
"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:
|
||||
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"),
|
||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||
"use_htmx": self.metadata.get("use_htmx", False),
|
||||
"use_vite": self.metadata.get("use_vite", False),
|
||||
}
|
||||
self._render_and_create_file(
|
||||
"requirements.txt",
|
||||
@@ -204,6 +220,7 @@ class FileCreator(BaseService):
|
||||
"use_database_url": metadata.get("use_database_url", True),
|
||||
"use_tailwind": metadata.get("use_tailwind", False),
|
||||
"use_htmx": metadata.get("use_htmx", False),
|
||||
"use_vite": metadata.get("use_vite", False),
|
||||
}
|
||||
self._render_and_create_file(
|
||||
"pyproject.toml",
|
||||
@@ -406,6 +423,7 @@ class FileCreator(BaseService):
|
||||
"use_database_url": self.metadata.get("use_database_url", True),
|
||||
"use_tailwind": self.metadata.get("use_tailwind", 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")
|
||||
self._render_and_create_file(
|
||||
@@ -424,6 +442,7 @@ class FileCreator(BaseService):
|
||||
"use_database_url": self.metadata.get("use_database_url", True),
|
||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||
"use_htmx": self.metadata.get("use_htmx", False),
|
||||
"use_vite": self.metadata.get("use_vite", False),
|
||||
}
|
||||
self._render_and_create_file(
|
||||
".gitlab-ci.yml",
|
||||
@@ -458,6 +477,7 @@ class FileCreator(BaseService):
|
||||
"database_type": self.metadata.get("database_type", "postgresql"),
|
||||
"use_tailwind": self.metadata.get("use_tailwind", False),
|
||||
"use_htmx": self.metadata.get("use_htmx", False),
|
||||
"use_vite": self.metadata.get("use_vite", False),
|
||||
},
|
||||
"cicd": {
|
||||
"github": self.metadata.get("use_github_actions", False),
|
||||
|
||||
@@ -112,6 +112,9 @@ class SetupCreator:
|
||||
for step_func in utility_steps:
|
||||
step_func()
|
||||
|
||||
if self.metadata.get("use_vite", False):
|
||||
self.file_creator.create_vite_config()
|
||||
|
||||
UIFormatter.print_success("Created all utility files successfully!")
|
||||
|
||||
def _create_cicd_pipelines(self) -> None:
|
||||
|
||||
Reference in new issue
Block a user