Compare commits

...

16 Commits

17 changed files with 10537 additions and 129 deletions

4
.gitignore vendored
View File

@ -1,3 +1 @@
node_modules
yarn.lock
package-lock.json
node_modules

8
.prettierrc Normal file
View File

@ -0,0 +1,8 @@
{
"semi": false,
"singleQuote": true,
"trailingComma": "none",
"tabWidth": 4,
"endOfLine": "lf"
}

View File

@ -5,6 +5,7 @@
> Gitea installation notes [git.berlin](https://git.berlin)
- [Migration from GitLab](#migration-from-gitlab)
- [Update Gitea](#update-gitea)
- [Customization](#customization)
- [Handy commands](#handy-commands)
- [Gitea Documentation](#gitea-documentation)
@ -13,7 +14,26 @@
## Migration from GitLab
- [`migrate-gitlab-gitea.sh`](migrate-gitlab-gitea.sh)
- [`bin/migrate-gitlab-gitea.sh`](bin/migrate-gitlab-gitea.sh)
## Update Gitea
```bash
# run update script, passing version number as option
./bin/update-gitea.sh 1.6.1
```
Update script sets options by default, can be changed at top of script:
| Option | Default | Description |
| ------------- | ------------- | ------------- |
| `giteaBinary` | `/home/git/gitea/gitea` | Gitea binary path |
| `arch` | `linux-amd64` | Server architecture |
| `giteaStore` | `/home/git/gitea-update` | Directory where update files will be stored |
| `giteaUser` | `git` | linux user Gitea is running under |
| `giteaGroup` | `git` | linux group Gitea is running under |
- [`bin/update-gitea.sh`](bin/update-gitea.sh)
## Customization
@ -21,7 +41,7 @@ The `custom/` folder maps to `/home/git/gitea/custom/` on the server. Its conten
```bash
npm i
gulp deploy
npm run deploy
```
[Gitea Docs: Customizing Gitea](https://docs.gitea.io/en-us/customizing-gitea/)
@ -40,10 +60,11 @@ sudo su git
./gitea dump -c gitea/custom/conf/app.ini
# Restart Gitea service
sudo systemctl restart gitea.service
sudo service gitea restart
# nginx
sudo vi /etc/nginx/sites-enabled/gitea
sudo service nginx restart
```
## Gitea Documentation

Binary file not shown.

View File

@ -1,12 +1,7 @@
#!/bin/sh
#
# usage, run as user git:
#
# sudo service gitea stop
# usage, run with sudo:
# ./update-gitea.sh 1.6.1
# sudo service gitea start
#
# su -c "./update-gitea.sh 1.6.1" -s /bin/sh git
#
set -e
@ -14,10 +9,29 @@ set -e
version=$1
arch="linux-amd64"
giteaBinary="/home/git/gitea/gitea"
giteaStore="/home/git/gitea-update"
giteaUser="git"
giteaGroup="git"
cd /home/git/gitea-update
# stop Gitea
sudo service gitea stop
echo "Stopped Gitea."
# download new binary
cd $giteaStore
echo "Downloading gitea-${version}-${arch}..."
wget -O "gitea-${version}-${arch}" "https://dl.gitea.io/gitea/${version}/gitea-${version}-${arch}"
cp "gitea-${version}-${arch}" $giteaBinary
chmod +x $giteaBinary
# copy new binary over old one
sudo cp "gitea-${version}-${arch}" $giteaBinary
echo "Updated Gitea binary v${version}."
# set permissions
sudo chown $giteaUser:$giteaGroup $giteaBinary
sudo chmod +x $giteaBinary
echo "Set permissions."
# start Gitea
sudo service gitea start
echo "Restarted Gitea. Update done."

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -0,0 +1,6 @@
<svg width="256px" height="256px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" >
<g id="logo">
<rect id="Rectangle" fill="#C0CED3" fill-rule="nonzero" x="0" y="0" width="256" height="256" rx="28"></rect>
<path d="M148.57,172.766 C144.16,183.925 134.795,190.364 119.016,197.617 C114.515,199.476 110.096,201.662 105.543,203.905 L103.746,143.726 L107.339,143.726 L107.339,132.947 L102.848,132.947 L102.848,128.456 C113.324,126.081 121.026,116.914 120.812,106.002 C121.026,95.1677 114.378,86.2793 104.644,82.6486 L104.644,61.0919 L101.052,60.1938 L101.052,54.8046 L99.2553,53.0082 L98.3571,8.09851 L96.5607,8.09851 L94.7643,8.09851 L93.8661,53.0082 L92.0697,54.8046 L92.0697,60.1938 L88.477,61.0919 L88.477,82.6486 C78.9568,86.2722 72.3095,95.1641 72.3095,106.002 C72.3095,116.91 80.0117,126.077 90.2734,128.456 L90.2734,132.947 L85.7824,132.947 L85.7824,143.726 L89.3752,143.726 L83.986,256 L109.135,256 L106.441,227.258 C109.965,223.185 117.096,219.743 127.099,215.581 C146.18,206.543 162.356,193.991 167.494,163.628 L170.213,163.628 L170.213,152.85 L165.722,152.85 L165.722,148.359 C176.197,145.983 183.899,136.816 183.686,125.904 C183.899,115.07 177.252,106.182 167.518,102.551 L167.518,80.9943 L163.925,80.0961 L163.925,74.7069 L162.129,72.9106 L161.231,28.0009 L159.434,28.0009 L157.638,28.0009 L156.74,72.9106 L154.943,74.7069 L154.943,80.0961 L151.351,80.9943 L151.351,102.551 C141.83,106.175 135.183,115.066 135.183,125.904 C135.183,136.812 142.885,145.979 153.147,148.359 L153.147,152.85 L148.656,152.85 L148.656,163.628 L151.318,163.628 C150.542,167.012 149.651,170.031 148.57,172.766 Z" id="Path" fill="#BA5B81"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
<path fill-rule="evenodd" d="M109.361988,256 L106.667407,227.257798 C110.191106,223.184708 117.322744,219.74283 127.325864,215.581279 C146.406502,206.543176 162.582118,193.990785 167.720639,163.628136 L170.439166,163.628136 L170.439166,152.84981 L165.948198,152.84981 L165.948198,148.358841 C176.423633,145.982981 184.12583,136.815923 183.912073,125.903996 C184.12583,115.070061 177.478483,106.181659 167.744585,102.550958 L167.744585,80.9943064 L164.15181,80.0961126 L164.15181,74.7069499 L162.355422,72.9105623 L161.457229,28.0008724 L159.660841,28.0008724 L157.864453,28.0008724 L156.96626,72.9105623 L155.169872,74.7069499 L155.169872,80.0961126 L151.577097,80.9943064 L151.577097,102.550958 C142.056955,106.174514 135.409608,115.066489 135.409608,125.903996 C135.409608,136.812351 143.111806,145.979409 153.373484,148.358841 L153.373484,152.84981 L148.882515,152.84981 L148.882515,163.628136 L151.544633,163.628136 C150.768799,167.011892 149.877601,170.030576 148.796657,172.765689 C144.386418,183.924922 135.021228,190.36373 119.24212,197.617403 C114.741362,199.476371 110.322898,201.66188 105.769213,203.90476 L103.972825,143.725775 L107.565601,143.725775 L107.565601,132.94745 L103.074632,132.94745 L103.074632,128.456481 C113.550067,126.080621 121.252264,116.913563 121.038508,106.001636 C121.252264,95.1677005 114.604917,86.2792982 104.871019,82.648597 L104.871019,61.0919458 L101.278244,60.193752 L101.278244,54.8045892 L99.4818564,53.0082016 L98.5836626,8.09851173 L96.787275,8.09851173 L94.9908875,8.09851173 L94.0926937,53.0082016 L92.2963061,54.8045892 L92.2963061,60.193752 L88.7035309,61.0919458 L88.7035309,82.648597 C79.1833896,86.2721532 72.5360425,95.164128 72.5360425,106.001636 C72.5360425,116.90999 80.2382402,126.077048 90.4999185,128.456481 L90.4999185,132.94745 L86.0089495,132.94745 L86.0089495,143.725775 L89.6017247,143.725775 L84.2125619,256 L28.2265625,256 C12.7625895,256 0.2265625,243.463973 0.2265625,228 L0.2265625,28 C0.2265625,12.536027 12.7625895,2.84068575e-15 28.2265625,0 L228.226562,0 C243.690535,-2.84068575e-15 256.226562,12.536027 256.226562,28 L256.226562,228 C256.226562,243.463973 243.690535,256 228.226562,256 L109.361988,256 Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -1,43 +1,37 @@
<meta name="theme-color" content="#BA5B81">
<style>
a,
.ui.breadcrumb a,
.repository.file.list #repo-files-table tbody .octicon.octicon-file-directory,
.repository.file.list #repo-files-table tbody .octicon.octicon-file-submodule,
.ui.labeled.button:not([class*="left labeled"])>.label,
.ui[class*="left labeled"].button>.button,
.ui.card>.extra a:not(.ui),
.ui.cards>.card>.extra a:not(.ui) {
color: #BA5B81;
:root {
--color-primary: #ba5b81;
--color-primary-light-1: #d76995;
--color-primary-light-2: #ef8cb4;
--color-primary-light-3: #f4a1c2;
--color-primary-light-4: #f8c5da;
--color-primary-light-5: #fcdbe9;
--color-primary-light-6: #fdecf3;
--color-primary-light-7: #fff5f9;
--color-primary-dark-1: #ad4b72;
--color-primary-dark-2: #a03c64;
--color-primary-dark-3: #8f2b53;
--color-primary-dark-4: #7b1d43;
--color-primary-dark-5: #6d1236;
--color-primary-dark-6: #510825;
--color-primary-dark-7: #2b0212;
--color-primary-hover: var(--color-primary-light-2);
--fonts-proportional: 'Avenir Next', Avenir, 'Helvetica Neue', Helvetica,
Arial, sans-serif;
}
a:hover,
.ui.breadcrumb a:hover,
.ui.card>.extra a:not(.ui):hover,
.ui.cards>.card>.extra a:not(.ui):hover {
color: #BA5B81;
text-decoration: underline;
#navbar .item {
font-weight: 500;
}
.ui.green.button,
.ui.green.buttons .button,
.ui.blue.button,
.ui.blue.buttons .button,
.ui.green.button:hover,
.ui.green.buttons .button:hover,
.ui.blue.button:hover,
.ui.blue.buttons .button:hover {
background-color: #BA5B81;
.page-content .ui.ui.ui.container:not(.fluid) {
width: 1024px;
}
</style>
.ui.basic.blue.button,
.ui.basic.blue.buttons .button {
box-shadow: 0 0 0 1px #BA5B81 inset !important;
color: #BA5B81 !important;
}
.feeds .list ul li.private {
background: rgba(186, 91, 129, 0.1);
}
</style>
<script
async
defer
data-website-id="97bd228d-da39-4661-bd87-60f5047a5132"
src="https://a.kretschmann.io/script.js"
></script>

View File

@ -1,12 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta charset="utf-8" />
<title>git.berlin</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Public Gitea installation housing git repositories for projects made in Berlin, Germany">
<link rel="canonical" href="https://git.berlin">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta
name="description"
content="Public Gitea installation housing git repositories for projects made in Berlin, Germany"
/>
<link rel="canonical" href="https://git.berlin" />
<link rel="icon" href="/assets/img/favicon.svg" type="image/svg+xml" />
<link
rel="alternate icon"
href="/assets/img/favicon.png"
type="image/png"
/>
<meta property="og:image" content="/assets/img/logo.png" />
<style>
*,
@ -28,20 +38,13 @@
body {
font-size: 1rem;
font-family: 'Avenir Next', Avenir, "Helvetica Neue", Helvetica, Arial, sans-serif;
font-family: 'Avenir Next', Avenir, 'Helvetica Neue', Helvetica,
Arial, sans-serif;
font-weight: 400;
line-height: 1.5;
color: #6b7f88;
padding: 2rem 0;
-moz-display: flex;
-moz-align-items: center;
-moz-justify-content: center;
-moz-flex-wrap: wrap;
-webkit-display: flex;
-webkit-align-items: center;
-webkit-justify-content: center;
-webkit-flex-wrap: wrap;
display: flex;
align-items: center;
justify-content: center;
@ -55,9 +58,9 @@
}
a {
color: #BA5B81;
color: #ba5b81;
text-decoration: none;
transition: .2s ease-out;
transition: 0.2s ease-out;
}
a:hover,
@ -95,12 +98,12 @@
}
.btn {
padding: .3rem 1rem;
padding: 0.3rem 1rem;
display: inline-block;
text-transform: uppercase;
font-size: .8rem;
font-size: 0.8rem;
border: 1px solid #8aa4af;
border-radius: .2rem;
border-radius: 0.2rem;
margin-top: 1rem;
margin-bottom: 1rem;
}
@ -108,20 +111,20 @@
.btn:hover,
.btn:focus {
background: #fff;
color: #BA5B81;
color: #ba5b81;
border-color: #fff;
}
.btn--primary {
background: #BA5B81;
background: #ba5b81;
color: #fff;
border-color: #BA5B81;
border-color: #ba5b81;
}
.btn--primary:hover,
.btn--primary:focus {
background: #fff;
color: #BA5B81;
color: #ba5b81;
border-color: #fff;
}
@ -135,7 +138,7 @@
padding: 2rem 0;
margin-top: 2rem;
color: #fff;
background: #C0CED3;
background: #c0ced3;
}
.text-center {
@ -145,66 +148,80 @@
footer {
padding-top: 2rem;
padding-bottom: 2rem;
font-size: .8rem;
font-size: 0.8rem;
color: #96a6ad;
}
</style>
<meta name="twitter:card" content="summary">
<meta name="twitter:creator" content="@kremalicious">
<meta name="twitter:url" content="https://git.berlin">
<meta name="twitter:title" content="git.berlin">
<meta name="twitter:description" content="Public Gitea installation housing git repositories for projects made in Berlin, Germany">
<meta name="twitter:card" content="summary" />
<meta name="twitter:creator" content="@kremalicious" />
<meta name="twitter:url" content="https://git.berlin" />
<meta name="twitter:title" content="git.berlin" />
<meta
name="twitter:description"
content="Public Gitea installation housing git repositories for projects made in Berlin, Germany"
/>
</head>
<body>
<article>
<div class="container">
<svg id="logo-gitberlin" viewBox="0 0 115 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg
id="logo-gitberlin"
viewBox="0 0 115 256"
xmlns="http://www.w3.org/2000/svg"
>
<g fill="#C0CED3">
<path d="M78.0192954,168.596418 C73.6220556,179.722758 64.2844708,186.142587 48.5518727,193.374879 C44.0643811,195.228368 39.6589412,197.407435 35.1186783,199.643703 L33.3275857,139.642102 L36.9097709,139.642102 L36.9097709,128.895546 L32.4320394,128.895546 L32.4320394,124.417815 C42.8765972,122.048958 50.556092,112.908921 50.3429652,102.029158 C50.556092,91.2271563 43.9283386,82.3649534 34.223132,78.744954 L34.223132,57.251843 L30.6409468,56.3562967 L30.6409468,50.983019 L28.8498543,49.1919264 L27.954308,4.41461182 L26.1632154,4.41461182 L24.3721228,4.41461182 L23.4765765,49.1919264 L21.6854839,50.983019 L21.6854839,56.3562967 L18.1032988,57.251843 L18.1032988,78.744954 C8.61121895,82.3578294 1.98346553,91.2235944 1.98346553,102.029158 C1.98346553,112.905359 9.66296035,122.045396 19.8943913,124.417815 L19.8943913,128.895546 L15.4166599,128.895546 L15.4166599,139.642102 L18.9988451,139.642102 L13.6255673,251.585388 L38.7008635,251.585388 L36.0142246,222.927907 C39.5275371,218.866822 46.6381547,215.435089 56.6117893,211.285805 C75.6361855,202.274343 91.7641216,189.758951 96.8874971,159.485798 L99.5980113,159.485798 L99.5980113,148.739243 L95.1202798,148.739243 L95.1202798,144.261511 C105.564838,141.892655 113.244332,132.752617 113.031206,121.872854 C113.244332,111.070853 106.616579,102.20865 96.9113724,98.5886506 L96.9113724,77.0955396 L93.3291872,76.1999933 L93.3291872,70.8267156 L91.5380946,69.035623 L90.6425484,24.2583084 L88.8514558,24.2583084 L87.0603632,24.2583084 L86.1648169,69.035623 L84.3737243,70.8267156 L84.3737243,76.1999933 L80.7915391,77.0955396 L80.7915391,98.5886506 C71.2994593,102.201526 64.6717059,111.067291 64.6717059,121.872854 C64.6717059,132.749055 72.3512007,141.889093 82.5826317,144.261511 L82.5826317,148.739243 L78.1049003,148.739243 L78.1049003,159.485798 L80.7591713,159.485798 C79.9856238,162.859581 79.0970526,165.869367 78.0192954,168.596418 Z"></path>
<path
d="M78.0192954,168.596418 C73.6220556,179.722758 64.2844708,186.142587 48.5518727,193.374879 C44.0643811,195.228368 39.6589412,197.407435 35.1186783,199.643703 L33.3275857,139.642102 L36.9097709,139.642102 L36.9097709,128.895546 L32.4320394,128.895546 L32.4320394,124.417815 C42.8765972,122.048958 50.556092,112.908921 50.3429652,102.029158 C50.556092,91.2271563 43.9283386,82.3649534 34.223132,78.744954 L34.223132,57.251843 L30.6409468,56.3562967 L30.6409468,50.983019 L28.8498543,49.1919264 L27.954308,4.41461182 L26.1632154,4.41461182 L24.3721228,4.41461182 L23.4765765,49.1919264 L21.6854839,50.983019 L21.6854839,56.3562967 L18.1032988,57.251843 L18.1032988,78.744954 C8.61121895,82.3578294 1.98346553,91.2235944 1.98346553,102.029158 C1.98346553,112.905359 9.66296035,122.045396 19.8943913,124.417815 L19.8943913,128.895546 L15.4166599,128.895546 L15.4166599,139.642102 L18.9988451,139.642102 L13.6255673,251.585388 L38.7008635,251.585388 L36.0142246,222.927907 C39.5275371,218.866822 46.6381547,215.435089 56.6117893,211.285805 C75.6361855,202.274343 91.7641216,189.758951 96.8874971,159.485798 L99.5980113,159.485798 L99.5980113,148.739243 L95.1202798,148.739243 L95.1202798,144.261511 C105.564838,141.892655 113.244332,132.752617 113.031206,121.872854 C113.244332,111.070853 106.616579,102.20865 96.9113724,98.5886506 L96.9113724,77.0955396 L93.3291872,76.1999933 L93.3291872,70.8267156 L91.5380946,69.035623 L90.6425484,24.2583084 L88.8514558,24.2583084 L87.0603632,24.2583084 L86.1648169,69.035623 L84.3737243,70.8267156 L84.3737243,76.1999933 L80.7915391,77.0955396 L80.7915391,98.5886506 C71.2994593,102.201526 64.6717059,111.067291 64.6717059,121.872854 C64.6717059,132.749055 72.3512007,141.889093 82.5826317,144.261511 L82.5826317,148.739243 L78.1049003,148.739243 L78.1049003,159.485798 L80.7591713,159.485798 C79.9856238,162.859581 79.0970526,165.869367 78.0192954,168.596418 Z"
></path>
</g>
</svg>
<h1 class="text-center">git.berlin</h1>
<p>Public <a href="https://gitea.io">Gitea</a> installation housing git repositories for projects made in Berlin, Germany. You know you always wanted <code>git.berlin</code> in your remotes.</p>
<p>Sign up is open for everyone creating open source or personal projects. Gitea is set up to private by default for all new repositories and groups. You're encouraged to make your repositories public though.</p>
<p>
Public <a href="https://gitea.io">Gitea</a> installation
housing git repositories for projects made in Berlin,
Germany. You know you always wanted
<code>git.berlin</code> in your remotes.
</p>
<p>
Sign up is open for everyone creating open source or
personal projects. Gitea is set up to private by default for
all new repositories and groups. You're encouraged to make
your repositories public though.
</p>
</div>
<div class="login text-center">
<div class="container">
<p>
<a class="btn btn--primary" href="https://git.berlin/user/login">Sign In or Sign Up</a>
<a class="btn" href="https://git.berlin/explore/repos">Explore public repositories</a>
<a
class="btn btn--primary"
href="https://git.berlin/user/login"
>Sign In or Sign Up</a
>
<a class="btn" href="https://git.berlin/explore/repos"
>Explore public repositories</a
>
</p>
</div>
</div>
<footer class="text-center">
<p>Maintained by <a href="https://matthiaskretschmann.com">@kremalicious</a>. <br><a href="mailto:m@git.berlin">Questions?</a></p>
<p>
Maintained by
<a href="https://matthiaskretschmann.com">@kremalicious</a>.
<br /><a href="mailto:m@git.berlin">Questions?</a>
</p>
</footer>
</article>
<!-- Piwik -->
<script>
var _paq = _paq || [];
_paq.push(["setDomains", ["*.git.berlin"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//analytics.kremalicious.com/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', 3]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript>
<p><img src="//analytics.kremalicious.com/piwik.php?idsite=3" style="border:0;" alt="" /></p>
</noscript>
<!-- End Piwik Code -->
<script
async
defer
data-website-id="97bd228d-da39-4661-bd87-60f5047a5132"
src="https://a.kretschmann.io/script.js"
></script>
</body>
</html>

View File

@ -1,10 +1,9 @@
const gulp = require('gulp')
const rsync = require('gulp-rsync')
const browser = require("browser-sync").create()
const gulp = require('gulp')
const rsync = require('gulp-rsync')
const browser = require('browser-sync').create()
// paths
const DIST = './custom/'
const DIST = './custom/'
//
// Dev Server
@ -17,18 +16,19 @@ gulp.task('server', () => {
})
})
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Deployment
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gulp.task('deploy', () => {
return gulp.src(DIST + '**/*')
.pipe(rsync({
gulp.task('deploy', () =>
gulp.src(DIST + '**/*').pipe(
rsync({
root: DIST,
hostname: 'git',
username: 'ubuntu',
destination: '/home/git/gitea/custom',
chown: 'git:git'
}))
})
destination: 'gitea/custom',
chown: 'git:git',
delete: true,
exclude: ['conf/']
})
)
)

10348
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -7,13 +7,18 @@
},
"homepage": "https://git.berlin",
"main": "gulpfile.js",
"scripts": {
"start": "gulp",
"deploy": "gulp deploy"
},
"devDependencies": {
"browser-sync": "^2.26.3",
"gulp": "^4.0.0",
"gulp-rsync": "0.0.8"
"browser-sync": "^3.0.2",
"gulp": "^4.0.2",
"gulp-rsync": "0.1.0",
"gulp-util": "^3.0.8"
},
"engines": {
"node": ">=10"
"node": "16"
},
"private": true,
"repository": {