Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
django-serve-spa / METADATA
Size: Mime:
Metadata-Version: 2.1
Name: django-serve-spa
Version: 0.1.0a4
Summary: Serve SPAs with Django
Home-page: https://github.com/kaoslabsinc/django-serve-spa
Author: Kaos Labs Inc.
Author-email: keyvan@keyvanm.com
License: BSD-3-Clause
Keywords: django,spa,react,serve
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 3.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: django (>=3.2)
Provides-Extra: test
Requires-Dist: tox ; extra == 'test'
Requires-Dist: pytest-django ; extra == 'test'
Requires-Dist: pytest-pythonpath ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'

# Django serve SPA

Serve SPAs with Django

## Quick start

```shell
pip install dj-kaos-spa
```

Build your SPA and copy the contents of the build into `SPA_ROOT` (e.g. `path/to/django/spa/`).

```python
# settings.py
SPA_ROOT = BASE_DIR / 'spa'  # where the built SPA code will live
SPA_URL = ''  # To serve from /

# urls.py
from kaos_spa import settings as spa_settings

urlpatterns += [
    path(spa_settings.SPA_URL, include('kaos_spa.urls')),
]
```

Runserver, and visit `SPA_URL` (`/` by default). Your SPA will show up.

## Notes

`dj-kaos-spa` is meant to be used for development and isn't recommended for production use. For production, serve the
SPA on its own using tools like [npm serve](https://www.npmjs.com/package/serve).

`dj-kaos-spa` is mostly tested with create-react-app apps, but in theory should work with any SPA.

## Utility scripts

`dj-kaos-spa` comes bundled with some utility scripts that makes building and copying your SPA project much more
convenient.

### `build-spa`

Build your SPA and put it in your django project.

Set the following environment variables

```shell
# required
SPA_SRC_DIR=/path/to/your/spa/
SPA_IN_DJANGO_DIR=/path/to/your/django/project/spa/  # what the SPA_ROOT django setting refers to

# optional
SPA_URL  # If you are not serving on /
SPA_BUILD_CMD="npm run build"
SPA_BUILD_DIR_PATH='build/'  # Where the build command builds the app in its src directory
```

run

```shell
build-spa
```

It'll build your SPA and put it in the right folder in your django project.

### `cm-spa-build`

Commits the new build into Git with commit message from arg. If no arg is supplied, commit message defaults to "New SPA
build".

Set the following environment variables

```shell
# required
SPA_IN_DJANGO_DIR=/path/to/your/django/project/spa/  # what the SPA_ROOT django setting refers to
```

run

```shell
cm-spa-build
```

## Development and Testing

### IDE Setup

Add the `example` directory to the `PYTHONPATH` in your IDE to avoid seeing import warnings in the `tests` modules. If
you are using PyCharm, this is already set up.

### Running the Tests

Install requirements

```
pip install -r requirements.txt
```

For local environment

```
pytest
```

For all supported environments

```
tox
```