diff --git a/.dockerignore b/.dockerignore index bdcd52c3a4..4b80bc2d1b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,6 @@ doc/ env/ +node_modules/ res/ local/ .git/ diff --git a/Dockerfile b/Dockerfile index 942bb8f799..c5fa61da57 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,11 +20,11 @@ RUN apt-get update && \ supervisor \ libmaxminddb0 \ libmaxminddb-dev \ - zlib1g-dev \ - nodejs \ - npm && \ + zlib1g-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ + curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash - && \ + apt-get install -y nodejs && \ dpkg-reconfigure locales && \ locale-gen C.UTF-8 && \ /usr/sbin/update-locale LANG=C.UTF-8 && \ @@ -49,6 +49,10 @@ COPY deployment/docker/production_settings.py /pretix/src/production_settings.py COPY pyproject.toml /pretix/pyproject.toml COPY _build /pretix/_build COPY src /pretix/src +COPY package.json /pretix/package.json +COPY package-lock.json /pretix/package-lock.json +COPY tsconfig.json /pretix/tsconfig.json +COPY vite.config.ts /pretix/vite.config.ts RUN pip3 install -U \ pip \ diff --git a/MANIFEST.in b/MANIFEST.in index adf0476f8d..c497bff7d0 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -48,3 +48,8 @@ recursive-include src Makefile recursive-exclude doc * recursive-exclude deployment * recursive-exclude res * + +include package.json +include package-lock.json +include tsconfig.json +include vite.config.ts diff --git a/src/Makefile b/src/Makefile index 7834612fac..24ca003289 100644 --- a/src/Makefile +++ b/src/Makefile @@ -9,10 +9,10 @@ localegen: ./manage.py makemessages --keep-pot --ignore "pretix/static/npm_dir/*" $(LNGS) ./manage.py makemessages --keep-pot -d djangojs --ignore "pretix/static/npm_dir/*" --ignore "pretix/helpers/*" --ignore "pretix/static/jsi18n/*" --ignore "pretix/static/jsi18n/*" --ignore "pretix/static.dist/*" --ignore "data/*" --ignore "pretix/static/rrule/*" --ignore "build/*" $(LNGS) -staticfiles: jsi18n +staticfiles: npminstall npmbuild jsi18n ./manage.py collectstatic --noinput -compress: npminstall +compress: ./manage.py compress jsi18n: localecompile @@ -25,8 +25,8 @@ coverage: coverage run -m py.test npminstall: - # keep this in sync with pretix/_build.py! - mkdir -p pretix/static.dist/node_prefix/ - cp -r pretix/static/npm_dir/* pretix/static.dist/node_prefix/ - npm ci --prefix=pretix/static.dist/node_prefix + npm ci + +npmbuild: + npm run build diff --git a/src/pretix/_build.py b/src/pretix/_build.py index d4e9bdd516..92b6a2dd19 100644 --- a/src/pretix/_build.py +++ b/src/pretix/_build.py @@ -36,11 +36,7 @@ def npm_install(): global npm_installed if not npm_installed: - # keep this in sync with Makefile! - node_prefix = os.path.join(here, 'static.dist', 'node_prefix') - os.makedirs(node_prefix, exist_ok=True) - shutil.copytree(os.path.join(here, 'static', 'npm_dir'), node_prefix, dirs_exist_ok=True) - subprocess.check_call('npm ci', shell=True, cwd=node_prefix) + subprocess.check_call('npm ci', shell=True, cwd=project_root) npm_installed = True diff --git a/src/pretix/_build_settings.py b/src/pretix/_build_settings.py index 5c04e511d7..859a7f912f 100644 --- a/src/pretix/_build_settings.py +++ b/src/pretix/_build_settings.py @@ -47,3 +47,5 @@ HAS_MEMCACHED = False HAS_CELERY = False HAS_GEOIP = False SENTRY_ENABLED = False +VITE_DEV_MODE = False +VITE_IGNORE = False diff --git a/src/pretix/base/templatetags/vite.py b/src/pretix/base/templatetags/vite.py index 81dc3b67a4..84f759f8c3 100644 --- a/src/pretix/base/templatetags/vite.py +++ b/src/pretix/base/templatetags/vite.py @@ -12,7 +12,7 @@ from django.utils.safestring import mark_safe register = template.Library() LOGGER = logging.getLogger(__name__) _MANIFEST = {} -MANIFEST_PATH = settings.STATIC_ROOT + "pretalx-manifest.json" +MANIFEST_PATH = settings.STATIC_ROOT + "/vite/control/.vite/manifest.json" # We're building the manifest if we don't have a dev server running AND if we're # not currently running `rebuild` (which creates the manifest in the first place). diff --git a/vite.config.js b/vite.config.ts similarity index 100% rename from vite.config.js rename to vite.config.ts