From 4bff3fa12ff3f41dc87bdbb82662b15d67d2f667 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Fri, 11 Nov 2022 11:40:53 +0100 Subject: [PATCH] add nuget metadata + github workflow --- .github/workflows/release.yml | 23 +++++++++++++++++++++++ README.md | 4 +++- src/ViteProxy.csproj | 29 ++++++++++++++++++++++++++++- viteproxy-logo.png | Bin 0 -> 5131 bytes viteproxy.png | Bin 0 -> 9220 bytes 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 viteproxy-logo.png create mode 100644 viteproxy.png diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..73fa86b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,23 @@ +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+" +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Verify commit exists in origin/main + run: | + git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/* + git branch --remote --contains | grep origin/main + - name: Set VERSION variable from tag + run: echo "VERSION=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_ENV + - name: Build + run: dotnet build --configuration Release /p:Version=${VERSION} + - name: Pack + run: dotnet pack --configuration Release /p:Version=${VERSION} --no-build --output . + - name: Push + run: dotnet nuget push ViteProxy.${VERSION}.nupkg --api-key ${secrets.NUGET_PUSH_API_KEY} \ No newline at end of file diff --git a/README.md b/README.md index 5a54f8b..c632aa2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ -**ViteProxy** is a proxy for vite projects within ASP.NET Core. +![ViteProxy](/viteproxy.png "ViteProxy") ## Introduction +**ViteProxy** is a proxy for vite projects within ASP.NET Core. + This project is meant to be used within server-side applications and not within SPAs (single-page applications).
Without ViteProxy you would have to start your server application (e.g. dotnet run) and additionally the vite dev server (e.g. npm run dev). The proxy is registered as a hosted service and started in tandem with the server application. diff --git a/src/ViteProxy.csproj b/src/ViteProxy.csproj index 59197d5..3104098 100644 --- a/src/ViteProxy.csproj +++ b/src/ViteProxy.csproj @@ -1,12 +1,39 @@ - + net6.0 enable + ViteProxy + ViteProxy + 0.0.0 + + + + ViteProxy + ViteProxy + Copyright © Tobias Klika 2022 + Vite, npm, middleware, server, development + Tobias Klika + ViteProxy is a proxy for vite projects within ASP.NET Core. + git + https://github.com/ceee/ViteProxy.git + true + ViteProxy + https://github.com/ceee/ViteProxy + https://raw.githubusercontent.com/ceee/ViteProxy/main/viteproxy.png + MIT + true + true + true + snupkg + + + + \ No newline at end of file diff --git a/viteproxy-logo.png b/viteproxy-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb83732f327e3cebe127491d826b526fe57ad7c GIT binary patch literal 5131 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 literal 0 HcmV?d00001 diff --git a/viteproxy.png b/viteproxy.png new file mode 100644 index 0000000000000000000000000000000000000000..626fd144969dbec73aee2a81749eb39487f04488 GIT binary patch literal 9220 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