create-jsc-vite-react-ts 1.2.6 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/template/.github/workflows/build.yml +199 -0
- package/template/etc/docker/Dockerfile +16 -0
- package/template/etc/docker/nginx.conf +54 -0
- /package/template/{.prettierrc → frontend/.prettierrc} +0 -0
- /package/template/{README.md → frontend/README.md} +0 -0
- /package/template/{eslint.config.js → frontend/eslint.config.js} +0 -0
- /package/template/{gitignore → frontend/gitignore} +0 -0
- /package/template/{index.html → frontend/index.html} +0 -0
- /package/template/{package.json → frontend/package.json} +0 -0
- /package/template/{public → frontend/public}/vite.svg +0 -0
- /package/template/{scripts → frontend/scripts}/create-tag.sh +0 -0
- /package/template/{scripts → frontend/scripts}/get-tag.sh +0 -0
- /package/template/{scripts → frontend/scripts}/update-version.sh +0 -0
- /package/template/{src → frontend/src}/App.test.tsx +0 -0
- /package/template/{src → frontend/src}/App.tsx +0 -0
- /package/template/{src → frontend/src}/app.css +0 -0
- /package/template/{src → frontend/src}/components/Footer.test.tsx +0 -0
- /package/template/{src → frontend/src}/components/Footer.tsx +0 -0
- /package/template/{src → frontend/src}/components/ThemeToggle.test.tsx +0 -0
- /package/template/{src → frontend/src}/components/ThemeToggle.tsx +0 -0
- /package/template/{src → frontend/src}/contexts/ThemeContext.tsx +0 -0
- /package/template/{src → frontend/src}/contexts/theme.ts +0 -0
- /package/template/{src → frontend/src}/hooks/useTheme.test.tsx +0 -0
- /package/template/{src → frontend/src}/hooks/useTheme.ts +0 -0
- /package/template/{src → frontend/src}/main.tsx +0 -0
- /package/template/{src → frontend/src}/test/setup.ts +0 -0
- /package/template/{tsconfig.app.json → frontend/tsconfig.app.json} +0 -0
- /package/template/{tsconfig.json → frontend/tsconfig.json} +0 -0
- /package/template/{tsconfig.node.json → frontend/tsconfig.node.json} +0 -0
- /package/template/{vite.config.ts → frontend/vite.config.ts} +0 -0
package/package.json
CHANGED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
name: Build
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- "main"
|
|
7
|
+
release:
|
|
8
|
+
types: [published]
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
IMAGE_NAME: jsc-vite-test
|
|
12
|
+
IMAGE_TITLE: Default JSC Vite React TS Image
|
|
13
|
+
IMAGE_DESCRIPTION: This is the image for JSC's Vite React TS template.
|
|
14
|
+
SRC_PATH: frontend/
|
|
15
|
+
DOCKERFILE_PATH: etc/docker/Dockerfile
|
|
16
|
+
NODE_VERSION: "24"
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
install:
|
|
20
|
+
name: Build source code
|
|
21
|
+
runs-on: ubuntu-24.04
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout
|
|
25
|
+
uses: actions/checkout@v6
|
|
26
|
+
|
|
27
|
+
- name: Set up Node.js
|
|
28
|
+
uses: actions/setup-node@v6
|
|
29
|
+
with:
|
|
30
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
31
|
+
|
|
32
|
+
- name: Install Dependencies
|
|
33
|
+
run: yarn --cwd ${{ env.SRC_PATH }} install
|
|
34
|
+
|
|
35
|
+
- name: Create tarball
|
|
36
|
+
run: tar -czf ${{ env.IMAGE_NAME }}.tar.gz -C ${{ env.SRC_PATH }} node_modules
|
|
37
|
+
|
|
38
|
+
- name: Upload common artifacts
|
|
39
|
+
uses: actions/upload-artifact@v6
|
|
40
|
+
with:
|
|
41
|
+
name: ${{ env.IMAGE_NAME }}
|
|
42
|
+
retention-days: 1
|
|
43
|
+
path: ${{ env.IMAGE_NAME }}.tar.gz
|
|
44
|
+
|
|
45
|
+
lint:
|
|
46
|
+
name: Run ESlint on source code
|
|
47
|
+
runs-on: ubuntu-24.04
|
|
48
|
+
needs: install
|
|
49
|
+
|
|
50
|
+
steps:
|
|
51
|
+
- name: Checkout
|
|
52
|
+
uses: actions/checkout@v6
|
|
53
|
+
|
|
54
|
+
- name: Set up Node.js
|
|
55
|
+
uses: actions/setup-node@v6
|
|
56
|
+
with:
|
|
57
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
58
|
+
|
|
59
|
+
- name: Download artifact
|
|
60
|
+
uses: actions/download-artifact@v6
|
|
61
|
+
with:
|
|
62
|
+
name: ${{ env.IMAGE_NAME }}
|
|
63
|
+
|
|
64
|
+
- name: Untar common Dependencies
|
|
65
|
+
run: tar -xzf ${{ env.IMAGE_NAME }}.tar.gz -C ./${{ env.SRC_PATH }}
|
|
66
|
+
|
|
67
|
+
- name: Run ESLint
|
|
68
|
+
run: |
|
|
69
|
+
yarn --cwd ${{ env.SRC_PATH }} lint
|
|
70
|
+
|
|
71
|
+
test:
|
|
72
|
+
name: Run tests on source code
|
|
73
|
+
runs-on: ubuntu-24.04
|
|
74
|
+
needs: install
|
|
75
|
+
|
|
76
|
+
steps:
|
|
77
|
+
- name: Checkout
|
|
78
|
+
uses: actions/checkout@v6
|
|
79
|
+
|
|
80
|
+
- name: Set up Node.js
|
|
81
|
+
uses: actions/setup-node@v6
|
|
82
|
+
with:
|
|
83
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
84
|
+
|
|
85
|
+
- name: Download artifact
|
|
86
|
+
uses: actions/download-artifact@v6
|
|
87
|
+
with:
|
|
88
|
+
name: ${{ env.IMAGE_NAME }}
|
|
89
|
+
|
|
90
|
+
- name: Untar Dependencies
|
|
91
|
+
run: tar -xzf ${{ env.IMAGE_NAME }}.tar.gz -C ./${{ env.SRC_PATH }}
|
|
92
|
+
|
|
93
|
+
- name: Run Tests
|
|
94
|
+
run: |
|
|
95
|
+
mkdir -p ${{ env.SRC_PATH }}coverage
|
|
96
|
+
HAVE_TEST=$(find ${{ env.SRC_PATH }} -name "*.test.ts" | wc -l)
|
|
97
|
+
if [ $HAVE_TEST -ne 0 ];
|
|
98
|
+
then
|
|
99
|
+
yarn --cwd ${{ env.SRC_PATH }} test:coverage
|
|
100
|
+
fi
|
|
101
|
+
echo "HAVE_TEST=${HAVE_TEST}" > ${{ env.SRC_PATH }}coverage/have_test.txt
|
|
102
|
+
|
|
103
|
+
- name: Upload Coverage Report
|
|
104
|
+
uses: actions/upload-artifact@v6
|
|
105
|
+
with:
|
|
106
|
+
name: coverage-report-${{ env.IMAGE_NAME }}
|
|
107
|
+
retention-days: 1
|
|
108
|
+
path: ${{ env.SRC_PATH }}coverage/
|
|
109
|
+
|
|
110
|
+
upload-coverage:
|
|
111
|
+
name: Upload Coverage to Codecov
|
|
112
|
+
runs-on: ubuntu-24.04
|
|
113
|
+
needs: test
|
|
114
|
+
|
|
115
|
+
steps:
|
|
116
|
+
- name: Checkout
|
|
117
|
+
uses: actions/checkout@v6
|
|
118
|
+
|
|
119
|
+
- name: Download artifact
|
|
120
|
+
uses: actions/download-artifact@v6
|
|
121
|
+
with:
|
|
122
|
+
name: coverage-report-${{ env.IMAGE_NAME }}
|
|
123
|
+
path: ${{ env.SRC_PATH }}coverage
|
|
124
|
+
|
|
125
|
+
- name: Set environment variable
|
|
126
|
+
run: |
|
|
127
|
+
cat ${{ env.SRC_PATH }}coverage/have_test.txt >> $GITHUB_ENV
|
|
128
|
+
|
|
129
|
+
- name: Upload coverage to Codecov
|
|
130
|
+
uses: codecov/codecov-action@v5
|
|
131
|
+
if: env.HAVE_TEST != 0
|
|
132
|
+
with:
|
|
133
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
134
|
+
files: ./${{ env.SRC_PATH }}coverage/*.json
|
|
135
|
+
flags: unittests
|
|
136
|
+
name: code-coverage
|
|
137
|
+
fail_ci_if_error: true
|
|
138
|
+
|
|
139
|
+
build-image:
|
|
140
|
+
name: Build image and push to Docker Hub
|
|
141
|
+
runs-on: ubuntu-24.04
|
|
142
|
+
needs:
|
|
143
|
+
- lint
|
|
144
|
+
- upload-coverage
|
|
145
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
146
|
+
|
|
147
|
+
steps:
|
|
148
|
+
- name: Checkout
|
|
149
|
+
uses: actions/checkout@v6
|
|
150
|
+
with:
|
|
151
|
+
fetch-depth: 0
|
|
152
|
+
|
|
153
|
+
- name: Set environment variable
|
|
154
|
+
run: |
|
|
155
|
+
if [ -f ${{ env.SRC_PATH }}/.env.production ]; then
|
|
156
|
+
cat ${{ env.SRC_PATH }}/.env.production >> $GITHUB_ENV
|
|
157
|
+
else
|
|
158
|
+
cat ${{ env.SRC_PATH }}/.env.example >> $GITHUB_ENV
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
- name: Docker meta
|
|
162
|
+
id: meta
|
|
163
|
+
uses: docker/metadata-action@v5
|
|
164
|
+
with:
|
|
165
|
+
images: |
|
|
166
|
+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}
|
|
167
|
+
tags: |
|
|
168
|
+
type=semver,pattern={{version}}
|
|
169
|
+
labels: |
|
|
170
|
+
org.opencontainers.image.title=${{ env.IMAGE_TITLE }}
|
|
171
|
+
org.opencontainers.image.description=${{ env.IMAGE_DESCRIPTION }}
|
|
172
|
+
|
|
173
|
+
- name: Login to Docker Hub
|
|
174
|
+
uses: docker/login-action@v3
|
|
175
|
+
with:
|
|
176
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
177
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
178
|
+
- name: Set up QEMU
|
|
179
|
+
uses: docker/setup-qemu-action@v3
|
|
180
|
+
|
|
181
|
+
- name: Set up Docker Buildx
|
|
182
|
+
uses: docker/setup-buildx-action@v3
|
|
183
|
+
|
|
184
|
+
- name: Build and push
|
|
185
|
+
uses: docker/build-push-action@v6
|
|
186
|
+
with:
|
|
187
|
+
context: .
|
|
188
|
+
file: ${{ env.DOCKERFILE_PATH }}
|
|
189
|
+
platforms: linux/arm64
|
|
190
|
+
push: true
|
|
191
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
192
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
193
|
+
build-args: |
|
|
194
|
+
VITE_APP_NAME=${{ env.IMAGE_TITLE }}
|
|
195
|
+
VITE_APP_VERSION=${{ github.ref_name}}
|
|
196
|
+
VITE_FACEBOOK_APP_ID=${{ env.VITE_FACEBOOK_APP_ID }}
|
|
197
|
+
VITE_DESCRIPTION=${{ env.VITE_DESCRIPTION }}
|
|
198
|
+
VITE_APP_URL=${{ env.VITE_APP_URL }}
|
|
199
|
+
VITE_APP_IMAGE=${{ env.VITE_APP_IMAGE }}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
FROM node:24-alpine AS builder
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
COPY frontend/ ./
|
|
5
|
+
|
|
6
|
+
ARG VITE_APP_NAME ${VITE_APP_NAME}
|
|
7
|
+
ARG VITE_APP_VERSION ${VITE_APP_VERSION}
|
|
8
|
+
|
|
9
|
+
RUN yarn --cwd frontend install
|
|
10
|
+
RUN yarn --cwd frontend build
|
|
11
|
+
|
|
12
|
+
FROM nginx:alpine
|
|
13
|
+
|
|
14
|
+
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
15
|
+
COPY etc/docker/nginx.conf /etc/nginx/
|
|
16
|
+
EXPOSE 80
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
user nginx;
|
|
2
|
+
worker_processes auto;
|
|
3
|
+
|
|
4
|
+
error_log /var/log/nginx/error.log notice;
|
|
5
|
+
pid /var/run/nginx.pid;
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
events {
|
|
9
|
+
worker_connections 1024;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
http {
|
|
14
|
+
include /etc/nginx/mime.types;
|
|
15
|
+
default_type application/octet-stream;
|
|
16
|
+
|
|
17
|
+
log_format json_combined escape=json '{'
|
|
18
|
+
'"@timestamp": "$time_iso8601", '
|
|
19
|
+
'"remote_addr": "$remote_addr", '
|
|
20
|
+
'"remote_user": "$remote_user", '
|
|
21
|
+
'"request_id": "$request_id", '
|
|
22
|
+
'"body_bytes_sent": $body_bytes_sent, '
|
|
23
|
+
'"bytes_sent": $bytes_sent, '
|
|
24
|
+
'"connection": "$connection", '
|
|
25
|
+
'"connection_requests": $connection_requests, '
|
|
26
|
+
'"content_type": "$sent_http_content_type", '
|
|
27
|
+
'"msec": $msec, '
|
|
28
|
+
'"pipe": "$pipe", '
|
|
29
|
+
'"request_time": $request_time, '
|
|
30
|
+
'"status": $status, '
|
|
31
|
+
'"http_referrer": "$http_referer", '
|
|
32
|
+
'"http_user_agent": "$http_user_agent", '
|
|
33
|
+
'"http_x_forwarded_for": "$http_x_forwarded_for", '
|
|
34
|
+
'"http_host": "$http_host", '
|
|
35
|
+
'"request_length": $request_length, '
|
|
36
|
+
'"request_method": "$request_method", '
|
|
37
|
+
'"request_uri": "$request_uri", '
|
|
38
|
+
'"scheme": "$scheme", '
|
|
39
|
+
'"server_addr": "$server_addr", '
|
|
40
|
+
'"server_name": "$server_name", '
|
|
41
|
+
'"server_port": $server_port'
|
|
42
|
+
'}';
|
|
43
|
+
|
|
44
|
+
access_log /var/log/nginx/access.log json_combined;
|
|
45
|
+
|
|
46
|
+
sendfile on;
|
|
47
|
+
#tcp_nopush on;
|
|
48
|
+
|
|
49
|
+
keepalive_timeout 65;
|
|
50
|
+
|
|
51
|
+
#gzip on;
|
|
52
|
+
|
|
53
|
+
include /etc/nginx/conf.d/*.conf;
|
|
54
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|