Run Django + Webpack dev server concurrently without Docker

This commit is contained in:
Bruno Alla 2022-03-25 19:45:24 +00:00
parent d566190ad2
commit 121d4d347f
3 changed files with 40 additions and 20 deletions

View File

@ -27,7 +27,7 @@ production-ready Django projects quickly.
- Registration via [django-allauth](https://github.com/pennersr/django-allauth) - Registration via [django-allauth](https://github.com/pennersr/django-allauth)
- Comes with custom user model ready to go - Comes with custom user model ready to go
- Optional basic ASGI setup for Websockets - Optional basic ASGI setup for Websockets
- Optional custom static build using Gulp and livereload - Optional custom static build using Gulp or Webpack
- Send emails via [Anymail](https://github.com/anymail/django-anymail) (using [Mailgun](http://www.mailgun.com/) by default or Amazon SES if AWS is selected cloud provider, but switchable) - Send emails via [Anymail](https://github.com/anymail/django-anymail) (using [Mailgun](http://www.mailgun.com/) by default or Amazon SES if AWS is selected cloud provider, but switchable)
- Media storage using Amazon S3 or Google Cloud Storage - Media storage using Amazon S3 or Google Cloud Storage
- Docker support using [docker-compose](https://github.com/docker/compose) for development and production (using [Traefik](https://traefik.io/) with [LetsEncrypt](https://letsencrypt.org/) support) - Docker support using [docker-compose](https://github.com/docker/compose) for development and production (using [Traefik](https://traefik.io/) with [LetsEncrypt](https://letsencrypt.org/) support)

View File

@ -136,13 +136,14 @@ def update_package_json(remove_dev_deps=None, remove_keys=None, scripts=None):
fd.write("\n") fd.write("\n")
def handle_js_runner(choice): def handle_js_runner(choice, use_docker, use_async):
if choice == "Gulp": if choice == "Gulp":
update_package_json( update_package_json(
remove_dev_deps=[ remove_dev_deps=[
"@babel/core", "@babel/core",
"@babel/preset-env", "@babel/preset-env",
"babel-loader", "babel-loader",
"concurrently",
"css-loader", "css-loader",
"mini-css-extract-plugin", "mini-css-extract-plugin",
"postcss-loader", "postcss-loader",
@ -162,23 +163,37 @@ def handle_js_runner(choice):
) )
remove_webpack_files() remove_webpack_files()
elif choice == "Webpack": elif choice == "Webpack":
update_package_json( scripts = {
remove_dev_deps=[ "dev": "webpack serve --config webpack/dev.config.js",
"browser-sync", "build": "webpack --config webpack/prod.config.js",
"cssnano", }
"gulp", remove_dev_deps = [
"gulp-imagemin", "browser-sync",
"gulp-plumber", "cssnano",
"gulp-postcss", "gulp",
"gulp-rename", "gulp-imagemin",
"gulp-sass", "gulp-plumber",
"gulp-uglify-es", "gulp-postcss",
], "gulp-rename",
scripts={ "gulp-sass",
"dev": "webpack serve --config webpack/dev.config.js ", "gulp-uglify-es",
"build": "webpack --config webpack/prod.config.js", ]
}, if not use_docker:
) dev_django_cmd = (
"gunicorn config.asgi -k uvicorn.workers.UvicornWorker --reload"
if use_async
else "python manage.py runserver_plus"
)
scripts.update(
{
"dev": "concurrently npm:dev:*",
"dev:webpack": "webpack serve --config webpack/dev.config.js",
"dev:django": dev_django_cmd,
}
)
else:
remove_dev_deps.append("concurrently")
update_package_json(remove_dev_deps=remove_dev_deps, scripts=scripts)
remove_gulp_files() remove_gulp_files()
@ -469,7 +484,11 @@ def main():
if "{{ cookiecutter.use_docker }}".lower() == "y": if "{{ cookiecutter.use_docker }}".lower() == "y":
remove_node_dockerfile() remove_node_dockerfile()
else: else:
handle_js_runner("{{ cookiecutter.frontend_pipeline }}") handle_js_runner(
"{{ cookiecutter.frontend_pipeline }}",
use_docker=("{{ cookiecutter.use_docker }}".lower() == "y"),
use_async=("{{ cookiecutter.use_async }}".lower() == "y"),
)
if "{{ cookiecutter.cloud_provider }}" == "None": if "{{ cookiecutter.cloud_provider }}" == "None":
print( print(

View File

@ -11,6 +11,7 @@
"browser-sync": "^2.27.7", "browser-sync": "^2.27.7",
"css-loader": "^6.5.1", "css-loader": "^6.5.1",
"gulp-concat": "^2.6.1", "gulp-concat": "^2.6.1",
"concurrently": "^7.0.0",
"cssnano": "^5.0.11", "cssnano": "^5.0.11",
"gulp": "^4.0.2", "gulp": "^4.0.2",
"gulp-imagemin": "^7.1.0", "gulp-imagemin": "^7.1.0",