Compare commits
No commits in common. "c8cfe669b813d3cdf6ada0b1d7bd9f1fa6fa7f85" and "87370d24be7b07370f77160553d641c7e8b2cffa" have entirely different histories.
c8cfe669b8
...
87370d24be
@ -1,6 +0,0 @@
|
|||||||
FROM mcr.microsoft.com/vscode/devcontainers/base:alpine-3.12
|
|
||||||
RUN apk update
|
|
||||||
RUN apk add --upgrade nodejs-current npm
|
|
||||||
RUN npm i -g yarn rimraf
|
|
||||||
RUN rimraf node_modules
|
|
||||||
RUN yarn set version berry
|
|
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Node.js",
|
|
||||||
"build": {
|
|
||||||
"dockerfile": "Dockerfile"
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"terminal.integrated.shell.linux": "/bin/sh"
|
|
||||||
},
|
|
||||||
"extensions": [
|
|
||||||
"dbaeumer.vscode-eslint",
|
|
||||||
"2gua.rainbow-brackets",
|
|
||||||
"christian-kohler.npm-intellisense",
|
|
||||||
"remimarsal.prettier-now",
|
|
||||||
"svelte.svelte-vscode",
|
|
||||||
"lokalise.i18n-ally",
|
|
||||||
"fivethree.vscode-svelte-snippets",
|
|
||||||
"voorjaar.windicss-intellisense"
|
|
||||||
],
|
|
||||||
"postCreateCommand": "yarn && yarn dev --open"
|
|
||||||
}
|
|
@ -1 +1,3 @@
|
|||||||
public/env.sample.js
|
public/env.sample.js
|
||||||
|
public/workbox-*.js
|
||||||
|
public/workbox-*.js.map
|
9
.gitignore
vendored
9
.gitignore
vendored
@ -1,10 +1,11 @@
|
|||||||
node_modules
|
node_modules
|
||||||
|
build
|
||||||
package-lock.json
|
package-lock.json
|
||||||
yarn.lock
|
yarn.lock
|
||||||
*.map
|
*.map
|
||||||
public/env.js
|
public/env.js
|
||||||
|
public/sw.js
|
||||||
|
public/index.html
|
||||||
|
public/workbox-*.js
|
||||||
|
svelte.config.js
|
||||||
public/index.html
|
public/index.html
|
||||||
/dist
|
|
||||||
.yarn
|
|
||||||
.pnp.js
|
|
||||||
.yarnrc.yml
|
|
||||||
|
3
.vscode/extensions.json
vendored
3
.vscode/extensions.json
vendored
@ -5,8 +5,7 @@
|
|||||||
"remimarsal.prettier-now",
|
"remimarsal.prettier-now",
|
||||||
"svelte.svelte-vscode",
|
"svelte.svelte-vscode",
|
||||||
"lokalise.i18n-ally",
|
"lokalise.i18n-ally",
|
||||||
"fivethree.vscode-svelte-snippets",
|
"fivethree.vscode-svelte-snippets"
|
||||||
"voorjaar.windicss-intellisense"
|
|
||||||
],
|
],
|
||||||
"unwantedRecommendations": [
|
"unwantedRecommendations": [
|
||||||
"antfu.i18n-ally"
|
"antfu.i18n-ally"
|
||||||
|
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"i18n-ally.localesPaths": "src/locales",
|
"i18n-ally.localesPaths": "src/locales",
|
||||||
"i18n-ally.keystyle": "nested",
|
"i18n-ally.keystyle": "nested"
|
||||||
"windicss.enableCodeFolding": false,
|
|
||||||
}
|
}
|
12
Dockerfile
12
Dockerfile
@ -1,14 +1,18 @@
|
|||||||
FROM node:15.5.1-alpine3.12
|
FROM node:15.5.1-alpine3.12
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
RUN npm i -g pnpm
|
||||||
COPY package.json ./
|
COPY package.json ./
|
||||||
RUN yarn
|
RUN pnpm i
|
||||||
COPY package.json *.config.js index.html ./
|
COPY package.json *.config.js workbox-config.js template-copy.js index.template.html s-config.template.js ./
|
||||||
COPY src ./src
|
COPY src ./src
|
||||||
COPY public ./public
|
COPY public ./public
|
||||||
RUN yarn build
|
RUN pnpm run build
|
||||||
# final image
|
# final image
|
||||||
FROM alpine
|
FROM alpine
|
||||||
COPY --from=0 /app/dist /app
|
COPY --from=0 /app/build /app
|
||||||
|
RUN rm -rf /app/build/_dist_/components
|
||||||
|
RUN rm -rf /app/build/_dist_/locales
|
||||||
|
RUN rm -rf /app/build-manifest.json
|
||||||
FROM fholzer/nginx-brotli:v1.19.1
|
FROM fholzer/nginx-brotli:v1.19.1
|
||||||
COPY --from=1 /app /usr/share/nginx/html
|
COPY --from=1 /app /usr/share/nginx/html
|
||||||
COPY ./nginx.conf /etc/nginx/nginx.conf
|
COPY ./nginx.conf /etc/nginx/nginx.conf
|
22
README.md
22
README.md
@ -1,22 +0,0 @@
|
|||||||
# @odit/lfk-frontend
|
|
||||||
|
|
||||||
## ✒️ Overview
|
|
||||||
This is an API client for [https://git.odit.services/lfk/backend](@lfk/backend)
|
|
||||||
- WebApp built with [Svelte](https://svelte.dev), [WindiCSS](https://windicss.org/) (to compile [TailwindCSS](https://tailwindcss.com/)) and [Vite](https://vitejs.dev).
|
|
||||||
|
|
||||||
This application is intended for use by admin users/ members only.
|
|
||||||
|
|
||||||
## 🚀 Getting Started
|
|
||||||
```
|
|
||||||
yarn
|
|
||||||
```
|
|
||||||
## Development
|
|
||||||
```
|
|
||||||
yarn dev
|
|
||||||
/
|
|
||||||
yarn dev --open
|
|
||||||
```
|
|
||||||
## Build
|
|
||||||
```
|
|
||||||
yarn build
|
|
||||||
```
|
|
@ -10,13 +10,14 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="description" content="Lauf Für Kaya! - Admin" />
|
<meta name="description" content="Lauf Für Kaya! - Admin" />
|
||||||
<title>Lauf für Kaya! - Admin</title>
|
<title>Lauf für Kaya! - Admin</title>
|
||||||
|
__TAILWIND_INSERT__
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.8.4-RELEASE_INFO</span>
|
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.11.0-RELEASE_INFO</span>
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
<script src="/env.js"></script>
|
<script src="/env.js"></script>
|
||||||
<script type="module" src="/src/main.js"></script>
|
<script defer type="module" src="/_dist_/index.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -6,15 +6,6 @@ http {
|
|||||||
server {
|
server {
|
||||||
error_page 404 /index.html;
|
error_page 404 /index.html;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
location = /index.html {
|
|
||||||
add_header Cache-Control 'no-store';
|
|
||||||
}
|
|
||||||
location = / {
|
|
||||||
add_header Cache-Control 'no-store';
|
|
||||||
}
|
|
||||||
location = /env.js {
|
|
||||||
add_header Cache-Control 'no-store';
|
|
||||||
}
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/ /index.html;
|
try_files $uri $uri/ /index.html;
|
||||||
}
|
}
|
||||||
|
60
package.json
60
package.json
@ -1,40 +1,46 @@
|
|||||||
{
|
{
|
||||||
"name": "@odit/lfk-frontend",
|
"name": "@odit/lfk-frontend",
|
||||||
"version": "0.8.4",
|
"version": "0.11.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"i18n-order": "node order.js",
|
"i18n-order": "node order.js",
|
||||||
"dev": "vite",
|
"dev:all": "yarn prebuild && snowpack dev",
|
||||||
"build": "vite build",
|
"dev": "cross-env NODE_ENV_ODIT=development_fast node template-copy.js && yarn build:sw && snowpack dev",
|
||||||
|
"build": "yarn prebuild && snowpack build",
|
||||||
|
"prebuild": "cross-env NODE_ENV_ODIT=production node template-copy.js && yarn build:sw",
|
||||||
|
"build:sw": "workbox generateSW workbox-config.js",
|
||||||
"release": "release-it",
|
"release": "release-it",
|
||||||
"licenses:export": "license-exporter --json -o public"
|
"licenses:export": "license-exporter --json -o public"
|
||||||
},
|
},
|
||||||
"license": "CC-BY-NC-SA-4.0",
|
"license": "CC-BY-NC-SA-4.0",
|
||||||
"devDependencies": {
|
"dependencies": {
|
||||||
"check-password-strength": "2.0.2",
|
"@odit/lfk-client-js": "0.9.2",
|
||||||
"@odit/lfk-client-js": "0.10.1",
|
"check-password-strength": "^2.0.2",
|
||||||
"@odit/license-exporter": "0.0.11",
|
"csvtojson": "^2.0.10",
|
||||||
"@sveltejs/vite-plugin-svelte": "1.0.0-next.5",
|
"gridjs": "3.3.0",
|
||||||
"@types/html-minifier": "4.0.0",
|
|
||||||
"auto-changelog": "2.2.1",
|
|
||||||
"autoprefixer": "10.2.5",
|
|
||||||
"csvtojson": "2.0.10",
|
|
||||||
"gridjs": "3.4.0",
|
|
||||||
"html-minifier": "4.0.0",
|
|
||||||
"localforage": "1.9.0",
|
"localforage": "1.9.0",
|
||||||
"marked": "2.0.1",
|
"marked": "^2.0.1",
|
||||||
"release-it": "14.5.1",
|
"svelte-focus-trap": "1.0.1",
|
||||||
"svelte": "3.37.0",
|
"svelte-i18n": "3.3.7",
|
||||||
"svelte-focus-trap": "1.2.0",
|
"svelte-select": "^3.17.0",
|
||||||
"svelte-i18n": "3.3.9",
|
"tailwindcss": "2.0.3",
|
||||||
"svelte-preprocess": "4.7.0",
|
|
||||||
"svelte-select": "3.17.0",
|
|
||||||
"tailwindcss": "2.0.4",
|
|
||||||
"tinro": "0.6.1",
|
"tinro": "0.6.1",
|
||||||
"toastify-js": "1.10.0",
|
"toastify-js": "1.9.3",
|
||||||
"validator": "13.5.2",
|
"validator": "13.5.2",
|
||||||
"vite": "2.1.5",
|
"xlsx": "^0.16.9"
|
||||||
"vite-plugin-windicss": "0.12.2",
|
},
|
||||||
"xlsx": "0.16.9"
|
"devDependencies": {
|
||||||
|
"@odit/license-exporter": "^0.0.11",
|
||||||
|
"@snowpack/plugin-svelte": "3.5.2",
|
||||||
|
"auto-changelog": "^2.2.1",
|
||||||
|
"autoprefixer": "10.2.5",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
|
"postcss": "8.2.8",
|
||||||
|
"postcss-load-config": "3.0.1",
|
||||||
|
"release-it": "^14.4.1",
|
||||||
|
"snowpack": "3.0.13",
|
||||||
|
"svelte": "3.35.0",
|
||||||
|
"svelte-preprocess": "4.6.9",
|
||||||
|
"workbox-cli": "6.1.2"
|
||||||
},
|
},
|
||||||
"release-it": {
|
"release-it": {
|
||||||
"git": {
|
"git": {
|
||||||
@ -50,7 +56,7 @@
|
|||||||
"publish": false
|
"publish": false
|
||||||
},
|
},
|
||||||
"hooks": {
|
"hooks": {
|
||||||
"after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.html && node order.js && git add src/locales"
|
"after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.template.html && node order.js && git add src/locales"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
6
s-config.template.js
Normal file
6
s-config.template.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
const sveltePreprocess = require('svelte-preprocess');
|
||||||
|
const preprocess = sveltePreprocess(__insert__);
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
preprocess
|
||||||
|
};
|
26
snowpack.config.js
Normal file
26
snowpack.config.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/** @type {import("snowpack").SnowpackUserConfig } */
|
||||||
|
module.exports = {
|
||||||
|
mount: {
|
||||||
|
public: '/',
|
||||||
|
src: '/_dist_'
|
||||||
|
},
|
||||||
|
plugins: [ '@snowpack/plugin-svelte' ],
|
||||||
|
routes: [
|
||||||
|
/* Enable an SPA Fallback in development: */
|
||||||
|
{ match: 'routes', src: '.*', dest: '/index.html' }
|
||||||
|
],
|
||||||
|
packageOptions: {
|
||||||
|
/* ... */
|
||||||
|
sourceMap: false
|
||||||
|
},
|
||||||
|
devOptions: {
|
||||||
|
/* ... */
|
||||||
|
},
|
||||||
|
buildOptions: {
|
||||||
|
/* ... */
|
||||||
|
},
|
||||||
|
alias: {
|
||||||
|
/* ... */
|
||||||
|
},
|
||||||
|
optimize: { bundle: true, minify: true }
|
||||||
|
};
|
@ -1,4 +1,5 @@
|
|||||||
<script>
|
<script>
|
||||||
|
import "./TailwindStyles.svelte";
|
||||||
import "toastify-js/src/toastify.css";
|
import "toastify-js/src/toastify.css";
|
||||||
import "gridjs/dist/theme/mermaid.css";
|
import "gridjs/dist/theme/mermaid.css";
|
||||||
import { Route, router } from "tinro";
|
import { Route, router } from "tinro";
|
||||||
@ -52,6 +53,7 @@
|
|||||||
import { OpenAPI } from "@odit/lfk-client-js";
|
import { OpenAPI } from "@odit/lfk-client-js";
|
||||||
import UserDetail from "./components/users/UserDetail.svelte";
|
import UserDetail from "./components/users/UserDetail.svelte";
|
||||||
OpenAPI.BASE = config.baseurl;
|
OpenAPI.BASE = config.baseurl;
|
||||||
|
import { register as registerSW } from "./swmodule";
|
||||||
import TeamDetail from "./components/teams/TeamDetail.svelte";
|
import TeamDetail from "./components/teams/TeamDetail.svelte";
|
||||||
import UserPermissions from "./components/users/UserPermissions.svelte";
|
import UserPermissions from "./components/users/UserPermissions.svelte";
|
||||||
import GroupPermissions from "./components/groups/GroupPermissions.svelte";
|
import GroupPermissions from "./components/groups/GroupPermissions.svelte";
|
||||||
@ -73,6 +75,7 @@
|
|||||||
import ScanDetail from "./components/scans/ScanDetail.svelte";
|
import ScanDetail from "./components/scans/ScanDetail.svelte";
|
||||||
import Cards from "./components/cards/Cards.svelte";
|
import Cards from "./components/cards/Cards.svelte";
|
||||||
store.init();
|
store.init();
|
||||||
|
registerSW();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Route>
|
<Route>
|
||||||
|
6
src/TailwindStyles.svelte
Normal file
6
src/TailwindStyles.svelte
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<style global>
|
||||||
|
/*! @import */
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
</style>
|
@ -149,7 +149,7 @@
|
|||||||
}).showToast();
|
}).showToast();
|
||||||
let count = 0;
|
let count = 0;
|
||||||
const current_cards = await RunnerCardService.runnerCardControllerGetAll();
|
const current_cards = await RunnerCardService.runnerCardControllerGetAll();
|
||||||
for (const t of generate_teams) {
|
for await (const t of generate_teams) {
|
||||||
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
||||||
t.id
|
t.id
|
||||||
);
|
);
|
||||||
@ -216,7 +216,7 @@
|
|||||||
}).showToast();
|
}).showToast();
|
||||||
let count = 0;
|
let count = 0;
|
||||||
const current_cards = await RunnerCardService.runnerCardControllerGetAll();
|
const current_cards = await RunnerCardService.runnerCardControllerGetAll();
|
||||||
for (const o of generate_orgs) {
|
for await (const o of generate_orgs) {
|
||||||
const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
|
const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
|
||||||
o.id
|
o.id
|
||||||
);
|
);
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
duration: -1,
|
duration: -1,
|
||||||
}).showToast();
|
}).showToast();
|
||||||
let count = 0;
|
let count = 0;
|
||||||
for (const t of generate_teams) {
|
for await (const t of generate_teams) {
|
||||||
count++;
|
count++;
|
||||||
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
||||||
t.id
|
t.id
|
||||||
@ -92,7 +92,7 @@
|
|||||||
text: $_("generating-pdf"),
|
text: $_("generating-pdf"),
|
||||||
duration: -1,
|
duration: -1,
|
||||||
}).showToast();
|
}).showToast();
|
||||||
for (const o of generate_orgs) {
|
for await (const o of generate_orgs) {
|
||||||
const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
|
const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
|
||||||
o.id
|
o.id
|
||||||
);
|
);
|
||||||
|
14
src/index.js
Normal file
14
src/index.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import App from './App.svelte';
|
||||||
|
|
||||||
|
const app = new App({
|
||||||
|
target: document.body
|
||||||
|
});
|
||||||
|
|
||||||
|
export default app;
|
||||||
|
// HMR
|
||||||
|
if (import.meta.hot) {
|
||||||
|
import.meta.hot.accept();
|
||||||
|
import.meta.hot.dispose(() => {
|
||||||
|
app.$destroy();
|
||||||
|
});
|
||||||
|
}
|
@ -1,9 +0,0 @@
|
|||||||
import 'windi.css';
|
|
||||||
import "toastify-js/src/toastify.css";
|
|
||||||
import "gridjs/dist/theme/mermaid.css";
|
|
||||||
import App from './App.svelte';
|
|
||||||
|
|
||||||
const app = new App({
|
|
||||||
target: document.body
|
|
||||||
});
|
|
||||||
export default app;
|
|
14
src/swmodule.js
Normal file
14
src/swmodule.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
export const register = () => {
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
navigator.serviceWorker.register('/sw.js').then(
|
||||||
|
(registration) => {
|
||||||
|
// console.log(`sw successful with scope: ${registration.scope}`);
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
// console.log(`sw failed: ${err}`);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -1,13 +1,14 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
|
purge: {
|
||||||
|
content: [ './src/**/*.svelte' ]
|
||||||
|
},
|
||||||
|
// darkMode: 'media',
|
||||||
|
variants: {},
|
||||||
|
plugins: [],
|
||||||
theme: {
|
theme: {
|
||||||
extend: {
|
container: {
|
||||||
colors: {
|
center: true,
|
||||||
reepolee: {
|
padding: '1.5rem'
|
||||||
500: '#b40000',
|
|
||||||
600: '#9c0000',
|
|
||||||
700: '#750000'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
19
template-copy.js
Normal file
19
template-copy.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
let content_svelteconfig = fs.readFileSync('./s-config.template.js', { encoding: 'utf8' });
|
||||||
|
let content_html = fs.readFileSync('./index.template.html', { encoding: 'utf8' });
|
||||||
|
if (process.env.NODE_ENV_ODIT == 'development_fast') {
|
||||||
|
content_html = content_html.replace(
|
||||||
|
'__TAILWIND_INSERT__',
|
||||||
|
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tailwindcss@2.0.2/dist/tailwind.min.css">'
|
||||||
|
);
|
||||||
|
content_svelteconfig = content_svelteconfig.replace('__insert__', '{postcss:{}}');
|
||||||
|
} else {
|
||||||
|
content_html = content_html.replace('__TAILWIND_INSERT__', '');
|
||||||
|
content_svelteconfig = content_svelteconfig.replace(
|
||||||
|
'__insert__',
|
||||||
|
"{postcss:{plugins:[require('tailwindcss'),require('autoprefixer')]}}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
fs.writeFileSync('./public/index.html', content_html);
|
||||||
|
fs.writeFileSync('./svelte.config.js', content_svelteconfig);
|
||||||
|
console.info('dev setup script done');
|
@ -1,5 +1,5 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const package = JSON.parse(fs.readFileSync(`./package.json`, { encoding: 'utf-8' }));
|
const package = JSON.parse(fs.readFileSync(`./package.json`, { encoding: 'utf-8' }));
|
||||||
const original = fs.readFileSync(`./index.html`, { encoding: 'utf-8' });
|
const original = fs.readFileSync(`./index.template.html`, { encoding: 'utf-8' });
|
||||||
let out = original.replace(/RELEASE_INFO-(\S)+-RELEASE_INFO/gi, 'RELEASE_INFO-' + package.version + '-RELEASE_INFO');
|
let out = original.replace(/RELEASE_INFO-(\S)+-RELEASE_INFO/gi, 'RELEASE_INFO-' + package.version + '-RELEASE_INFO');
|
||||||
fs.writeFileSync(`./index.html`, out);
|
fs.writeFileSync(`./index.template.html`, out);
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
import svelte from '@sveltejs/vite-plugin-svelte';
|
|
||||||
import windiCSS from 'vite-plugin-windicss';
|
|
||||||
import { minify } from 'html-minifier';
|
|
||||||
import { defineConfig } from 'vite';
|
|
||||||
//
|
|
||||||
const indexReplace = () => {
|
|
||||||
return {
|
|
||||||
name: 'html-transform',
|
|
||||||
transformIndexHtml(html) {
|
|
||||||
return minify(html, {
|
|
||||||
collapseWhitespace: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export default defineConfig(({ command, mode }) => {
|
|
||||||
const isProduction = mode === 'production';
|
|
||||||
return {
|
|
||||||
// base: './',
|
|
||||||
build: {
|
|
||||||
polyfillDynamicImport: false,
|
|
||||||
cssCodeSplit: false,
|
|
||||||
minify: isProduction
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
windiCSS({
|
|
||||||
//@ts-ignore
|
|
||||||
verbose: true,
|
|
||||||
silent: false,
|
|
||||||
debug: true,
|
|
||||||
config: 'tailwind.config.js', // tailwind config file path (optional)
|
|
||||||
compile: false, // false: interpretation mode; true: compilation mode
|
|
||||||
prefix: 'windi-', // set compilation mode style prefix
|
|
||||||
globalPreflight: true, // set preflight style is global or scoped
|
|
||||||
globalUtility: true // set utility style is global or scoped
|
|
||||||
}),
|
|
||||||
svelte({
|
|
||||||
//@ts-ignore
|
|
||||||
hot: !isProduction,
|
|
||||||
emitCss: true,
|
|
||||||
extensions: [ '.md', '.svx', '.svelte' ],
|
|
||||||
preprocess: [
|
|
||||||
//
|
|
||||||
]
|
|
||||||
}),
|
|
||||||
indexReplace()
|
|
||||||
]
|
|
||||||
};
|
|
||||||
});
|
|
9
workbox-config.js
Normal file
9
workbox-config.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
module.exports = {
|
||||||
|
globDirectory: 'public',
|
||||||
|
globPatterns: [ '**/*.{js,ico,png,svg,html,webmanifest,txt,json}' ],
|
||||||
|
globIgnores: [ 'env.js', 'env.sample.js' ],
|
||||||
|
swDest: 'public/sw.js',
|
||||||
|
cleanupOutdatedCaches: true,
|
||||||
|
mode: 'production',
|
||||||
|
sourcemap: false
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user