#시작하기 전에
(폐쇄망에서는 NEXUS 환경이 반드시 필요합니다.)
Server name : [신규]프로젝트ID > 오른쪽 칸으로 이동
-Dspring.profiles.active=local
npm install
npm run dev
npm WARN deprecated 은 모듈내의 의존성 문제이기 때문에 무시한다.
(본 소스는 svelte4 기준으로 개발되어 있음. 새로 설치할 경우 svelte5로 개발해야함)
cd /svelte-springboot-starter
npm create svelte@latest front-end-svlete
Add ESLint for code linting Add Prettier for code formatting
cd front-end-svelte npm install //기본패키지 설치 npm i -D @sveltejs/adapter-static //배포용 모듈 추가
## 2-1. 소스위치 가이드
아래와 같이 구성되었는지 먼저 확인합니다.
##### BACKEND 구성
/springboot-svelte-starter - 프로젝트 소스 /front-end-svelte - Front-end 소스개발 폴더 /src /main /java - Back-end 영역 소스 /resources - Back-end 영역 환경설정 /webapp - Front-end Sveltekit 터미널에서 npm run build 결과 소스 .gitignore - git에 업로드되지 않을 예외 항목을 적어놓은 파일 pom.xml - maven 프로젝트 설정 파일 README.md - 이 파일!! ...
##### FRONT-END 구성
/springboot-svelte-starter - 프로젝트 소스 /front-end-svelte - Front-end sveltekit vite 영역 빌드 전 소스 /src /comp - 화면별 .svelte 컴포넌트 모음 /layout - AuthCheck > Base > Content > Frame 순으로 덮여져 있음 /lib - $lib 위치(import app from '$lib/app';) /routes +layout.svelte - /app.scss 전체화면 적용 +page.svelte - svelte 첫 진입점 ... app.html - 개발용 최초 진입점 > ./routes/layout.svelte > ./routes/+page.svelte 순으로 app.scss - CSS 전체화면 적용 소스 ... /static /webapp - 빌드된 소스파일 모음 index.html - 실제 운영시 접근하는 최초 파일 ... svelte.config.js - 빌드경로, 진입점파일 등 svelte/kit 설정 vite.config.js - proxy port 설정 및 빌드파일 chunkSize 설정 ...
## 2-2. 개발환경
##### 개발/배포 방법 요약
- front-end 개발은 /springboot-svelte-starter/front-end-svelte/경로에서 VSCODE를 작업하고
- back-end 개발은 /springboot-svelte-starter 경로에서 Spring Tool Suite(STS) 또는 이클립스로 작업한다.(import Existing Maven Project)
- 개발테스트: back-end는 STS에서 Server구동 + front-end는 VSCODE bash 터미널에서 npm run dev를 실행하여 localhost:8081 접속하여 테스트
- 운영테스트: back-end는 STS에서 Server구동 + front-end는 VSCODE bash 터미널에서 npm run build를 실행하여 localhost:8080 접속하여 테스트
- port 번호: 개발/운영환경에 맞게 바꾸어주면 된다.
1. 이클립스: Servers > 프로젝트 정보창 Overview > Ports 정보 수정
- front-end: 8081
- back-end: 8080
2. Svelte: /front-end-svelte 정보 수정
.vite.config.js
/src/lib/app.js
- 간혹, 개발/운영테스트가 동일하게 작동하지 않을 때가 있다. 외부모듈<TUI-Datepicker> 사용할 경우였는데, HTMLDomEelemnt id, role 등을 설정하여 수정되었음
npm run dev 실행시 warning 메시지를 잡아주어야 빌드가 깔끔해진다. ARIA role 등을 잘 찾아서 설정해 주도록 해야한다.
(MDN 참고사이트 : https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/button_role)
- 배포반영은 VSCODE bash 터미널에서 npm run build까지 실행 후 git commit, merge, push 등 완료
(npm run build하면 /svelte-springboot-starter/src/main/webapp 안의 파일이 모두 새로운 파일로 변경되기 때문에 Git Commit전에는 꼭 잊지말 것)
#####/svelte-springboot-starter/front-end-svelte/svelte.config.js에서 아래 내용처럼 변경
import adapter from '@sveltejs/adapter-static'; import { vitePreprocess } from '@sveltejs/kit/vite';
/** @type {import('@sveltejs/kit').Config} */ const config = { preprocess: vitePreprocess(), kit: { adapter: adapter({ pages: 'webapp' //빌드 경로: 편의상 webapp으로 한다. , assets: 'webapp' //빌드 경로 , fallback: 'index.html' //진입점 파일 , precompress: false , strict: true }), prerender: { entries: [] } } };
export default config;
##### /front-end-svelte/package.json 변경
"scripts": {
"dev": "vite dev", --> 터미널에서 npm run dev 로 실행: 가상환경에서 웹서비스를 띄워주기. 이후 소스코드의 실시간 변경이 탐지되고 브라우저에 반영된다.
"build": "vite build && rm -fr ../src/main/webapp && cp -R ./webapp ../src/main/" --> npm run build 로 실행: 빌드 후 폴더를 SpringBoot 소스로 이동 시킨다.
"preview": "vite preview",
}
##### /front-end-svelte/vite.config.js 변경
import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite';
const port_backend = 8080; //★★★Front-end 서비스 포트(npm run dev에서만 사용됨) const port_frontend_dev = 8081; //★★★Back-end WAS 포트 (npm run dev에서 back-end와 통신할 때 사용 // /src/lib/app.js의 PATH와 함께 설정해야 합니다.) const port_preview = 8082; //npm run preview 에서 사용(SpringBoot에서 볼거기 때문에 거의 사용하지 않는다)
export default defineConfig({
plugins: [sveltekit()]
, server: {
port: port_frontend_dev
, strictPort: false //true: 다른 서비스가 포트를 사용중일 때 exit, false: 임의의 포트로 자동 지정
, proxy:{
//npm run dev 로 실행항 결우 Back-end 서비스 접속을 위해 사용됨.("/back-end" 주소로 오면 모두 8080 포트로 우회한다.)
//8080 포트는 SpringBoot Server의 http 포트이다. 다를 경우 수정 필요!
//rewrite는 요청주소를 "/back-end/home" 에서 "/home" 으로 변경해주는 역할을 한다.
//npm run build 후 SpringBoot Server 구동시 본 설정은 아무 영향을 주지 않는다.
'/back-end': {
target: http://localhost:${port_backend}/
, changeOrigin: true
, rewrite: (path) => path.replace(/^/back-end/,'')
}
}
}
, preview: {
port: port_preview
}
//빌드
, build: {
chunkSizeWarningLimit: 1600 //빌드 Warning 발생 해결
}
});
#### /front-end-svelte/src/lib/app.js
```javascript
const App = function(){
this.name = "svelteSpringbootStarter";//★★★쿠키, 세션스토리지 명으로 사용됨
this.port_backend = 8080; //★★★Front-end 서비스 포트(npm run dev에서만 사용됨)
this.port_frontend_dev = 8081; //★★★Back-end WAS 포트 (npm run dev에서 back-end와 통신할 때 사용
//vite.config.js server.proxy 참조
//npm run dev에서 back-end와 통신하기 위해 /back-end를 강제로 붙여준다.
//console.log(location, location.port=="28082");
if(location.port==this.port_frontend_dev.toString()){
//npm run dev 사용
this.PATH = "/back-end";
this.WEBSOCKET = `ws://${location.hostname}:${this.port_backend}/socket`
}else{
//npm run build 사용
this.PATH = "";
this.WEBSOCKET = `ws://${location.host}/socket`
}
}
http://localhost:8081
권장방법
작업폴더로 가서 프로젝트 폴더 통째로 복사본을 만들어준다.
D:\VANDEV2WEB\workspace\SPRINGBOOT\svelte-springboot-starter
D:\VANDEV2WEB\workspace\SPRINGBOOT\svelte-springboot-starter - 복사본
VSCode나 SourceTree에서 bash 터미널을 열어서 진행
D:\VANDEV2WEB\workspace\SPRINGBOOT\svelte-springboot-starter (works/dev) bash창에서 작업 시작
git remote -v로 연결된 프로젝트가 없는 경우 "git remote add" 명령으로 연결해 준다. 이미 연결되어 있을 경우는 Step2-2로 진행
[work/dev] git checkout main
-- 현재 브랜치를 main 으로 변경한다.
[main] git remote add origin http://github.com/aaboo/svelte-springboot-starter.git
-- 소스트리에서 Remotes가 활성화되어 origin 이 활성화 된다.(svelte-springboot-starter.git 으로 새로 연결됨)
[main] git fetch
-- 최초 패치를 받는다 : 소스트리에서 Remotes의 origin/main 이 활성화 된다.
STARTER 프로젝트를 복사하여 다른 프로젝트를 생성할 경우 기존의 프로젝트로 연결되어 있을 수 있다. git remote -v로 아래처럼 다른 프로젝트에 연결되어 있을 경우 "git remote set-url" 명령으로 변경해 준다.
git remote -v
origin http://github.com/aaboo/svelte-springboot-starter.git (fetch)
origin http://github.com/aaboo/svelte-springboot-starter.git (push)
git remote set-url origin http://github.com/aaboo/svelte-springboot-starter.git
[works/dev] git checkout main
-- 현재 브랜치를 main 으로 변경한다.
[main] git remote set-url origin http://github.com/aaboo/svelte-springboot-starter.git
-- 소스트리에서 Remotes가 활성화되어 origin 이 활성화 된다.(aaboo.git 에서 svelte-springboot-starter.git 으로 연결됨)
[works/dev] git fetch
-- 최초 패치를 받는다 : 소스트리에서 Remotes의 origin/main 이 활성화 된다.
백업한 폴더에서 아래 폴더와 파일을 복사해 프로젝트 폴더로 붙여넣기 해준다. (main 브랜치 상태에서 실행)
/src
/pom.xml
/README.md
/.gitignore
[main] git add .
[main] git commit -m "복사 완료"
[main] git push origin main
(현재 아래와 같이 되어 있으니, 적절하게 수정해 줍니다.)
.mvn/
.classpath
.factorypath
.svn/
Gulpfile.js
mvnw
mvnw.cmd
package.json
.project
.settings/
target/
front-end-svelte/.eslintignore
front-end-svelte/.eslintrc.cjs
front-end-svelte/.npmrc
front-end-svelte/.prettierignore
front-end-svelte/.prettierrc
front-end-svelte/.gitignore
front-end-svelte/webapp/**
.cfInfo
.cfPrjInfo
.gitIgnore