This commit is contained in:
@@ -563,10 +563,7 @@ Projektarbeit
|
||||
- Einführung in REACT
|
||||
- VDOM von REACT
|
||||
- Build Tools im Vergleich & Einführung in Vite
|
||||
- Komponenten in React
|
||||
- Wiederverwendbare Komponenten in React
|
||||
- Gestaltungsmöglichkeiten in Frameworks
|
||||
- EventHandler in React
|
||||
- ES6 Module mit ohne ohne Bundler
|
||||
|
||||
**Übungen:**
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
@@ -9,7 +9,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
530
05_react/uebungen/u01_hello-react/package-lock.json
generated
Normal file
530
05_react/uebungen/u01_hello-react/package-lock.json
generated
Normal file
@@ -0,0 +1,530 @@
|
||||
{
|
||||
"name": "u01_hello-react",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "u01_hello-react",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"react": "^19.2.8",
|
||||
"react-dom": "^19.2.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"esbuild": "^0.28.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/aix-ppc64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
|
||||
"integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"aix"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
|
||||
"integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
|
||||
"integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ia32": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
|
||||
"integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-loong64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
|
||||
"integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-mips64el": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
|
||||
"integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
|
||||
"cpu": [
|
||||
"mips64el"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ppc64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
|
||||
"integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-riscv64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
|
||||
"integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-s390x": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
|
||||
"integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openharmony-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openharmony"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/sunos-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"sunos"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-arm64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
|
||||
"integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-ia32": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
|
||||
"integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-x64": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
|
||||
"integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.28.1",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
|
||||
"integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"esbuild": "bin/esbuild"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/aix-ppc64": "0.28.1",
|
||||
"@esbuild/android-arm": "0.28.1",
|
||||
"@esbuild/android-arm64": "0.28.1",
|
||||
"@esbuild/android-x64": "0.28.1",
|
||||
"@esbuild/darwin-arm64": "0.28.1",
|
||||
"@esbuild/darwin-x64": "0.28.1",
|
||||
"@esbuild/freebsd-arm64": "0.28.1",
|
||||
"@esbuild/freebsd-x64": "0.28.1",
|
||||
"@esbuild/linux-arm": "0.28.1",
|
||||
"@esbuild/linux-arm64": "0.28.1",
|
||||
"@esbuild/linux-ia32": "0.28.1",
|
||||
"@esbuild/linux-loong64": "0.28.1",
|
||||
"@esbuild/linux-mips64el": "0.28.1",
|
||||
"@esbuild/linux-ppc64": "0.28.1",
|
||||
"@esbuild/linux-riscv64": "0.28.1",
|
||||
"@esbuild/linux-s390x": "0.28.1",
|
||||
"@esbuild/linux-x64": "0.28.1",
|
||||
"@esbuild/netbsd-arm64": "0.28.1",
|
||||
"@esbuild/netbsd-x64": "0.28.1",
|
||||
"@esbuild/openbsd-arm64": "0.28.1",
|
||||
"@esbuild/openbsd-x64": "0.28.1",
|
||||
"@esbuild/openharmony-arm64": "0.28.1",
|
||||
"@esbuild/sunos-x64": "0.28.1",
|
||||
"@esbuild/win32-arm64": "0.28.1",
|
||||
"@esbuild/win32-ia32": "0.28.1",
|
||||
"@esbuild/win32-x64": "0.28.1"
|
||||
}
|
||||
},
|
||||
"node_modules/react": {
|
||||
"version": "19.2.8",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
|
||||
"integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-dom": {
|
||||
"version": "19.2.8",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz",
|
||||
"integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"scheduler": "^0.27.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^19.2.8"
|
||||
}
|
||||
},
|
||||
"node_modules/scheduler": {
|
||||
"version": "0.27.0",
|
||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
|
||||
"integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
|
||||
"license": "MIT"
|
||||
}
|
||||
}
|
||||
}
|
||||
18
05_react/uebungen/u01_hello-react/package.json
Normal file
18
05_react/uebungen/u01_hello-react/package.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "u01_hello-react",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "npx esbuild src/index.jsx --bundle --watch --outfile=dist/bundle.js --loader:.js=jsx"
|
||||
},
|
||||
"keywords": [],
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"react": "^19.2.8",
|
||||
"react-dom": "^19.2.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"esbuild": "^0.28.1"
|
||||
}
|
||||
}
|
||||
12
05_react/uebungen/u01_hello-react/src/App.jsx
Normal file
12
05_react/uebungen/u01_hello-react/src/App.jsx
Normal file
@@ -0,0 +1,12 @@
|
||||
import React from 'react';
|
||||
|
||||
function App() {
|
||||
console.log('init App'); // JS logic
|
||||
return (
|
||||
<div className="container pt-5">
|
||||
<h1>Hello React!</h1>
|
||||
</div>
|
||||
); // JSX - View
|
||||
}
|
||||
|
||||
export default App;
|
||||
12
05_react/uebungen/u01_hello-react/src/index.jsx
Normal file
12
05_react/uebungen/u01_hello-react/src/index.jsx
Normal file
@@ -0,0 +1,12 @@
|
||||
import React, { StrictMode } from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
|
||||
// import von Komponente
|
||||
import App from './App';
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root')) //
|
||||
.render(
|
||||
<StrictMode>
|
||||
<App />
|
||||
</StrictMode>,
|
||||
);
|
||||
14
05_react/uebungen/u02-03_mathfn-modul/assets/js/MathFn.js
Normal file
14
05_react/uebungen/u02-03_mathfn-modul/assets/js/MathFn.js
Normal file
@@ -0,0 +1,14 @@
|
||||
// Factory Function
|
||||
const MathFn = () => {
|
||||
// closures
|
||||
const add = (a, b) => a + b;
|
||||
const subtract = (a, b) => a - b;
|
||||
|
||||
const multiply = (a, b) => a * b;
|
||||
const divide = (a, b) => {
|
||||
return b === 0 ? NaN : a / b;
|
||||
};
|
||||
|
||||
export { add, subtract, multiply, divide };
|
||||
};
|
||||
export default MathFn;
|
||||
27
05_react/uebungen/u02-03_mathfn-modul/assets/js/main.js
Normal file
27
05_react/uebungen/u02-03_mathfn-modul/assets/js/main.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import { add, subtract, divide, multiply } from './math';
|
||||
|
||||
import math from './math';
|
||||
|
||||
import MathFn from './MathFn';
|
||||
|
||||
const app = MathFn();
|
||||
|
||||
console.log(app.add(1, 2)); // => 3;
|
||||
console.log(app.subtract(3, 2)); //=> 1
|
||||
|
||||
console.log(app.multiply(2, 3)); // => 6
|
||||
console.log(app.divide(6, 3)); // => 2
|
||||
|
||||
console.log(add(1, 2)); // => 3;
|
||||
console.log(subtract(3, 2)); //=> 1
|
||||
|
||||
console.log(multiply(2, 3)); // => 6
|
||||
console.log(divide(6, 3)); // => 2
|
||||
|
||||
// -----------------------
|
||||
|
||||
console.log(math.add(1, 2)); // => 3;
|
||||
console.log(math.subtract(3, 2)); //=> 1
|
||||
|
||||
console.log(math.multiply(2, 3)); // => 6
|
||||
console.log(math.divide(6, 3)); // => 2
|
||||
37
05_react/uebungen/u02-03_mathfn-modul/assets/js/math.js
Normal file
37
05_react/uebungen/u02-03_mathfn-modul/assets/js/math.js
Normal file
@@ -0,0 +1,37 @@
|
||||
// explizite Freigabe von Einheiten
|
||||
|
||||
// math.js
|
||||
export const add = (a, b) => a + b;
|
||||
export const subtract = (a, b) => a - b;
|
||||
|
||||
// Übung 2: Mathfunktionen als Modul
|
||||
|
||||
// Programmiere zwei weitere Module, die jeweils eine Funktion multiply und divide enthalten. Importiere die Funktionen in der main.js-Datei und führe sie aus.
|
||||
|
||||
export const multiply = (a, b) => a * b;
|
||||
export const divide = (a, b) => {
|
||||
return b === 0 ? NaN : a / b;
|
||||
};
|
||||
|
||||
// Übung 3: Exportieren Funktionen als Objekt
|
||||
|
||||
// Anstatt die Funktionen add, subtract, multiply und divide benannt zu exportieren, exportiere sie als Standard-Export in einem Objekt. Importiere das Objekt in der main.js-Datei und führe die Funktionen aus.
|
||||
|
||||
export default {
|
||||
add,
|
||||
subtract,
|
||||
multiply,
|
||||
divide,
|
||||
// add: add,
|
||||
// subtract: subtract,
|
||||
// multiply:multiply,
|
||||
// divide: divide,
|
||||
};
|
||||
|
||||
// Übung 2: Mathfunktionen als Modul
|
||||
|
||||
// Programmiere zwei weitere Module, die jeweils eine Funktion multiply und divide enthalten. Importiere die Funktionen in der main.js-Datei und führe sie aus.
|
||||
|
||||
// Übung 3: Exportieren Funktionen als Objekt
|
||||
|
||||
// Anstatt die Funktionen add, subtract, multiply und divide benannt zu exportieren, exportiere sie als Standard-Export in einem Objekt. Importiere das Objekt in der main.js-Datei und führe die Funktionen aus.
|
||||
1130
05_react/uebungen/u02-03_mathfn-modul/package-lock.json
generated
Normal file
1130
05_react/uebungen/u02-03_mathfn-modul/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -12,7 +12,7 @@
|
||||
"license": "ISC",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"esbuild": "^0.27.0",
|
||||
"esbuild": "^0.28.1",
|
||||
"http-server": "^14.1.1"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
import { add, subtract } from './math';
|
||||
|
||||
console.log(add(1, 2)); // => 3;
|
||||
console.log(subtract(3, 2)); //=> 1
|
||||
@@ -1,13 +0,0 @@
|
||||
// explizite Freigabe von Einheiten
|
||||
|
||||
// math.js
|
||||
export const add = (a, b) => a + b;
|
||||
export const subtract = (a, b) => a - b;
|
||||
|
||||
// Übung 2: Mathfunktionen als Modul
|
||||
|
||||
// Programmiere zwei weitere Module, die jeweils eine Funktion multiply und divide enthalten. Importiere die Funktionen in der main.js-Datei und führe sie aus.
|
||||
|
||||
// Übung 3: Exportieren Funktionen als Objekt
|
||||
|
||||
// Anstatt die Funktionen add, subtract, multiply und divide benannt zu exportieren, exportiere sie als Standard-Export in einem Objekt. Importiere das Objekt in der main.js-Datei und führe die Funktionen aus.
|
||||
@@ -2,6 +2,7 @@ import math from './math.js'; // ohne bundler kompletter pfad
|
||||
|
||||
// import '../../node_modules/jquery/dist/jquery.js';
|
||||
import '../../node_modules/lodash/lodash.js';
|
||||
// identisch zu <script src="../../node_modules/lodash/lodash.js"></script>
|
||||
|
||||
// https://esm.sh/
|
||||
import $ from 'https://esm.sh/jquery@4.0.0';
|
||||
|
||||
88
webseite-gulp-ts/frontend/about.html
Normal file
88
webseite-gulp-ts/frontend/about.html
Normal file
@@ -0,0 +1,88 @@
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Webseite mit SASS</title>
|
||||
<link rel="icon" type="image/png" href="/favicon/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/favicon/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png" />
|
||||
<meta name="apple-mobile-web-app-title" content="Donkey-Coder" />
|
||||
<link rel="manifest" href="/favicon/site.webmanifest" />
|
||||
<!-- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" /> -->
|
||||
<link rel="stylesheet" href="/assets/css/main.css" />
|
||||
<script src="/assets/js/build.js" defer></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- nav.menu-main>ul.list>li*4>a[href="#"]{Link $} -->
|
||||
<nav class="menu-main">
|
||||
<ul class="list">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li>
|
||||
<a href="#projects">Projects</a>
|
||||
<ul class="sublist">
|
||||
<li><a href="/projects/product-manager.html">Product Manager</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="/about.html">About</a></li>
|
||||
<li><a href="#">Contact</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<main>
|
||||
<div class="container py-5">
|
||||
<h1>About us</h1>
|
||||
<p>
|
||||
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ut, alias architecto tenetur, temporibus at ex
|
||||
reprehenderit libero veniam esse quis qui recusandae dolorum consectetur molestias dignissimos dolorem rem
|
||||
maxime repudiandae eveniet dolores. Aut error esse eligendi magni alias ducimus eaque, iste laudantium quas
|
||||
soluta quasi provident expedita architecto modi dolorem quam voluptatum harum? Nemo, neque velit modi
|
||||
accusamus rem, iste reprehenderit minus delectus numquam animi in, adipisci repudiandae tenetur quo possimus
|
||||
sed. Sequi hic voluptatum odio ullam velit? Libero dicta nam perferendis quos, totam deserunt dolores, at
|
||||
assumenda eligendi repudiandae vel alias nemo molestiae omnis tempore numquam excepturi, reprehenderit eveniet
|
||||
deleniti eaque! Aperiam, repellat nostrum! Odio, dicta perspiciatis sapiente ducimus similique voluptatum
|
||||
adipisci eligendi vitae corrupti dolorum officiis, veritatis rerum omnis labore sunt suscipit architecto.
|
||||
Officia excepturi exercitationem quasi error natus repellendus voluptas facilis incidunt eligendi fuga! Natus
|
||||
totam minus, blanditiis quo sint sit cum nesciunt culpa suscipit laborum vitae? At possimus dolorum rem
|
||||
recusandae similique vitae soluta modi ad ex vero fugit hic ipsa ipsam doloribus laboriosam deserunt voluptate
|
||||
aut quos minima in porro facilis delectus, quaerat nulla. Obcaecati architecto maiores natus delectus enim
|
||||
odio magni perferendis necessitatibus, ullam vitae nisi neque aliquam, tempore numquam, consequuntur
|
||||
blanditiis dolores. Debitis exercitationem dignissimos aspernatur minima ipsam quis voluptas quasi ipsa
|
||||
dolorum, ad facilis corrupti doloribus aut magni distinctio voluptate fugit eos beatae cum culpa omnis
|
||||
recusandae quod eligendi assumenda! Eos perferendis nam a deserunt dolore tempore corporis, numquam ut ducimus
|
||||
possimus veritatis aperiam maxime quidem. Beatae ad vitae inventore, minus molestiae quam porro a consequuntur
|
||||
corrupti. Ducimus deserunt perferendis sit eum maxime labore sed aliquam optio repellat eius vitae, magnam,
|
||||
necessitatibus vel fuga provident quibusdam velit culpa dolorem doloribus sint excepturi. Repellat ducimus
|
||||
dolorum perferendis? Id similique iusto natus aliquid nesciunt, perferendis exercitationem corrupti maxime, ut
|
||||
laudantium at adipisci optio esse.
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- footer.footer-main>.row>.col*3>h3{Headline}+p{lorem10} -->
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
22
webseite-gulp-ts/frontend/dev/html/includes/footer-main.html
Normal file
22
webseite-gulp-ts/frontend/dev/html/includes/footer-main.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<!-- footer.footer-main>.row>.col*3>h3{Headline}+p{lorem10} -->
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -8,7 +8,7 @@
|
||||
<li><a href="/projects/product-manager.html">Product Manager</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">About</a></li>
|
||||
<li><a href="/about.html">About</a></li>
|
||||
<li><a href="#">Contact</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
38
webseite-gulp-ts/frontend/dev/html/pages/about.html
Normal file
38
webseite-gulp-ts/frontend/dev/html/pages/about.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
@@include('head.html')
|
||||
<body>
|
||||
@@include('menu-main.html')
|
||||
<main>
|
||||
<div class="container py-5">
|
||||
<h1>About us</h1>
|
||||
<p>
|
||||
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ut, alias architecto tenetur, temporibus at ex
|
||||
reprehenderit libero veniam esse quis qui recusandae dolorum consectetur molestias dignissimos dolorem rem
|
||||
maxime repudiandae eveniet dolores. Aut error esse eligendi magni alias ducimus eaque, iste laudantium quas
|
||||
soluta quasi provident expedita architecto modi dolorem quam voluptatum harum? Nemo, neque velit modi
|
||||
accusamus rem, iste reprehenderit minus delectus numquam animi in, adipisci repudiandae tenetur quo possimus
|
||||
sed. Sequi hic voluptatum odio ullam velit? Libero dicta nam perferendis quos, totam deserunt dolores, at
|
||||
assumenda eligendi repudiandae vel alias nemo molestiae omnis tempore numquam excepturi, reprehenderit eveniet
|
||||
deleniti eaque! Aperiam, repellat nostrum! Odio, dicta perspiciatis sapiente ducimus similique voluptatum
|
||||
adipisci eligendi vitae corrupti dolorum officiis, veritatis rerum omnis labore sunt suscipit architecto.
|
||||
Officia excepturi exercitationem quasi error natus repellendus voluptas facilis incidunt eligendi fuga! Natus
|
||||
totam minus, blanditiis quo sint sit cum nesciunt culpa suscipit laborum vitae? At possimus dolorum rem
|
||||
recusandae similique vitae soluta modi ad ex vero fugit hic ipsa ipsam doloribus laboriosam deserunt voluptate
|
||||
aut quos minima in porro facilis delectus, quaerat nulla. Obcaecati architecto maiores natus delectus enim
|
||||
odio magni perferendis necessitatibus, ullam vitae nisi neque aliquam, tempore numquam, consequuntur
|
||||
blanditiis dolores. Debitis exercitationem dignissimos aspernatur minima ipsam quis voluptas quasi ipsa
|
||||
dolorum, ad facilis corrupti doloribus aut magni distinctio voluptate fugit eos beatae cum culpa omnis
|
||||
recusandae quod eligendi assumenda! Eos perferendis nam a deserunt dolore tempore corporis, numquam ut ducimus
|
||||
possimus veritatis aperiam maxime quidem. Beatae ad vitae inventore, minus molestiae quam porro a consequuntur
|
||||
corrupti. Ducimus deserunt perferendis sit eum maxime labore sed aliquam optio repellat eius vitae, magnam,
|
||||
necessitatibus vel fuga provident quibusdam velit culpa dolorem doloribus sint excepturi. Repellat ducimus
|
||||
dolorum perferendis? Id similique iusto natus aliquid nesciunt, perferendis exercitationem corrupti maxime, ut
|
||||
laudantium at adipisci optio esse.
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@@include('footer-main.html')
|
||||
</body>
|
||||
</html>
|
||||
@@ -38,27 +38,6 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- footer.footer-main>.row>.col*3>h3{Headline}+p{lorem10} -->
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum?
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@include('footer-main.html')
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -213,27 +213,6 @@
|
||||
<!-- ▲ /product-manager ▲ -->
|
||||
</main>
|
||||
|
||||
<!-- footer.footer-main>.row>.col*3>h3{Headline}+p{lorem10} -->
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum?
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@include('footer-main.html')
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -66,6 +66,9 @@ task('css', (done) => {
|
||||
|
||||
// JS bzw. TS ==================================
|
||||
|
||||
import { spawn } from 'node:child_process';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import path from 'node:path';
|
||||
import rollupStream from '@rollup/stream';
|
||||
import { babel } from '@rollup/plugin-babel'; // Plugin für rollup. JS Dateien werden über Babel direkt beim bundlen in "altes" JS über babel kompiliert
|
||||
import { nodeResolve } from '@rollup/plugin-node-resolve'; // import Kurzschreibweise (suche Module im node_modules Ordner)
|
||||
@@ -73,12 +76,27 @@ import commonJs from '@rollup/plugin-commonjs'; // commonjs module werden module
|
||||
import source from 'vinyl-source-stream';
|
||||
import buffer from 'vinyl-buffer';
|
||||
import rollupReplace from '@rollup/plugin-replace'; // Umbenennung von Variablen in den Modulen möglich
|
||||
import typescript from '@rollup/plugin-typescript'; // For TypeScript support needs "typescript" and "tslib"
|
||||
import esbuild from 'rollup-plugin-esbuild'; // TypeScript strippen ohne TS-Compiler-API (TS 7+ kompatibel)
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const tscBin = path.join(__dirname, 'node_modules', 'typescript', 'bin', 'tsc');
|
||||
|
||||
// declare the cache variable outside of task scopes
|
||||
let cache;
|
||||
|
||||
// $ gulp ts
|
||||
// $ gulp typecheck — Typen prüfen (tsc CLI, kein Emit)
|
||||
task('typecheck', (done) => {
|
||||
const child = spawn(process.execPath, [tscBin, '--noEmit'], {
|
||||
stdio: 'inherit',
|
||||
cwd: __dirname,
|
||||
});
|
||||
child.on('error', done);
|
||||
child.on('close', (code) => {
|
||||
done(code === 0 ? undefined : new Error(`typecheck failed with exit code ${code}`));
|
||||
});
|
||||
});
|
||||
|
||||
// $ gulp ts — Bundle (esbuild strippt Types, Babel downlevelt für Browser)
|
||||
task('ts', () => {
|
||||
// Updated path to look in dev/scripts for a main.ts file
|
||||
const sourceFile = './dev/scripts/main.ts';
|
||||
@@ -93,7 +111,14 @@ task('ts', () => {
|
||||
// define the cache in Rollup options
|
||||
cache,
|
||||
plugins: [
|
||||
typescript(), // Added TypeScript plugin
|
||||
esbuild({
|
||||
include: /\.[jt]sx?$/,
|
||||
exclude: /node_modules/,
|
||||
sourceMap: true,
|
||||
// Babel übernimmt Browser-Downleveling; esbuild nur TS→JS
|
||||
target: 'esnext',
|
||||
tsconfig: './tsconfig.json',
|
||||
}),
|
||||
rollupReplace({
|
||||
'process.env.NODE_ENV': JSON.stringify('development'),
|
||||
preventAssignment: true,
|
||||
@@ -107,7 +132,7 @@ task('ts', () => {
|
||||
plugins: ['@babel/plugin-transform-runtime'], // kontrolliert, ob ein Modul bereits eingebunden und bindet es nicht erneut ein
|
||||
babelHelpers: 'runtime',
|
||||
compact: true,
|
||||
extensions: ['.js', '.ts'], // Tell babel to process TS files
|
||||
extensions: ['.js', '.ts'],
|
||||
}),
|
||||
],
|
||||
})
|
||||
@@ -168,6 +193,7 @@ task('watcher', () => {
|
||||
|
||||
// ==== DEV MODE ====================
|
||||
task('dev', series('css', 'ts', 'html', parallel('watcher', 'server')));
|
||||
task('check', series('typecheck', 'ts'));
|
||||
|
||||
// ===================================
|
||||
task('test', (done) => {
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<script src="/assets/js/build.js" defer></script>
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- header.header-main>.content-box>figure>img[alt="Logo"]+figc{The Donkey Coders} -->
|
||||
<header class="header-main">
|
||||
@@ -61,7 +62,7 @@
|
||||
<li><a href="/projects/product-manager.html">Product Manager</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">About</a></li>
|
||||
<li><a href="/about.html">About</a></li>
|
||||
<li><a href="#">Contact</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
@@ -90,26 +91,27 @@
|
||||
</main>
|
||||
|
||||
<!-- footer.footer-main>.row>.col*3>h3{Headline}+p{lorem10} -->
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum?
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
2524
webseite-gulp-ts/frontend/package-lock.json
generated
2524
webseite-gulp-ts/frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -4,42 +4,45 @@
|
||||
"description": "",
|
||||
"main": "gulpfile.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
"start": "gulp dev",
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"build:ts": "gulp ts"
|
||||
},
|
||||
"keywords": [],
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.28.5",
|
||||
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||
"@babel/preset-env": "^7.28.5",
|
||||
"@babel/runtime": "^7.28.4",
|
||||
"@rollup/plugin-babel": "^6.1.0",
|
||||
"@rollup/plugin-commonjs": "^29.0.0",
|
||||
"@babel/core": "^7.29.7",
|
||||
"@babel/plugin-transform-runtime": "^7.29.7",
|
||||
"@babel/preset-env": "^7.29.7",
|
||||
"@babel/runtime": "^7.29.7",
|
||||
"@rollup/plugin-babel": "^7.1.0",
|
||||
"@rollup/plugin-commonjs": "^29.0.3",
|
||||
"@rollup/plugin-node-resolve": "^16.0.3",
|
||||
"@rollup/plugin-replace": "^6.0.3",
|
||||
"@rollup/plugin-typescript": "^12.3.0",
|
||||
"@rollup/stream": "^3.0.1",
|
||||
"@types/bootstrap": "^5.2.11",
|
||||
"@types/toastify-js": "^1.12.4",
|
||||
"browser-sync": "^3.0.4",
|
||||
"core-js": "^3.46.0",
|
||||
"core-js": "^3.49.0",
|
||||
"del": "^8.0.1",
|
||||
"esbuild": "^0.28.1",
|
||||
"gulp": "^5.0.1",
|
||||
"gulp-autoprefixer": "^10.0.0",
|
||||
"gulp-clean-css": "^4.3.0",
|
||||
"gulp-file-include": "^2.3.0",
|
||||
"gulp-html-minifier-terser": "^7.1.0",
|
||||
"gulp-html-minifier-terser": "^8.0.0",
|
||||
"gulp-plumber": "^1.2.1",
|
||||
"gulp-rename": "^2.1.0",
|
||||
"gulp-replace": "^1.1.4",
|
||||
"gulp-sass": "^6.0.1",
|
||||
"gulp-sizereport": "^1.2.1",
|
||||
"gulp-sourcemaps": "^2.6.5",
|
||||
"gulp-sourcemaps": "^3.0.0",
|
||||
"gulp-terser": "^2.1.0",
|
||||
"rollup": "^4.53.1",
|
||||
"sass": "^1.93.3",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.9.3",
|
||||
"rollup": "^4.62.4",
|
||||
"rollup-plugin-esbuild": "^6.2.1",
|
||||
"sass": "^1.102.0",
|
||||
"typescript": "^7.0.2",
|
||||
"vinyl-buffer": "^1.0.1",
|
||||
"vinyl-paths": "^5.0.0",
|
||||
"vinyl-source-stream": "^2.0.0"
|
||||
@@ -47,8 +50,11 @@
|
||||
"dependencies": {
|
||||
"@splidejs/splide": "^4.1.4",
|
||||
"bootstrap": "^5.3.8",
|
||||
"lodash": "^4.17.21",
|
||||
"lodash": "^4.18.1",
|
||||
"toastify-js": "^1.12.0",
|
||||
"validator": "^13.15.22"
|
||||
"validator": "^13.15.35"
|
||||
},
|
||||
"allowScripts": {
|
||||
"esbuild@0.28.1": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<li><a href="/projects/product-manager.html">Product Manager</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">About</a></li>
|
||||
<li><a href="/about.html">About</a></li>
|
||||
<li><a href="#">Contact</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
@@ -242,26 +242,27 @@
|
||||
</main>
|
||||
|
||||
<!-- footer.footer-main>.row>.col*3>h3{Headline}+p{lorem10} -->
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum?
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="footer-main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Address</h3>
|
||||
<p>
|
||||
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Beatae omnis hic eligendi rem fugiat quo! Autem
|
||||
totam maxime itaque earum
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
<div class="col">
|
||||
<h3>Social Media</h3>
|
||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nisi, earum.</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h3>Privacy Policy</h3>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet, porro!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"target": "es2015",
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"ignoreDeprecations": "6.0",
|
||||
"moduleResolution": "bundler",
|
||||
"strict": true,
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"sourceMap": true,
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"*": ["node_modules/*"]
|
||||
}
|
||||
"noEmit": true
|
||||
},
|
||||
"include": ["dev/scripts/**/*.ts"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user