#시작하기 전에
(폐쇄망에서는 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
- Which Svelte app template? > Skeleton project
- Add type checking with TypeScript? > Yes, using JavaScript With JSDoc comments
- Select additional options
> Add ESLint for code linting
> Add Prettier for code formatting
cd front-end-svelte
npm install //기본패키지 설치
npm i -D @sveltejs/adapter-static //배포용 모듈 추가
아래와 같이 구성되었는지 먼저 확인합니다.
/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 - 이 파일!!
/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 설정
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;
"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",
}
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 발생 해결
},
});
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
신규 프로젝트 최초 업로드
github에 http://github.com/aaboo/svelte-springboot-starter.git 저장소를 만든 후 진행한다.
cd /d/github/svelte-springboot-starter #로컬 프로젝트 폴더로 이동
rm -fr .git #혹시 있을 기존 git 정보를 삭제한다.
git init #git을 초기화 한다.
git checkout master #초기화시 생성된 master 브랜치로 checkout(이동)한다.
git branch -m main #master 브랜치명을 main으로 변경한다.
git remote add origin http://github.com/aaboo/svelte-springboot-starter.git #원격저장소와 연결한다.
git push --force --set-upstream origin main #원격저장소에 소스를 업로드한다. (--set-upstream 옵션은 최초 1회만 사용한다.)
#github과 계정연동이 되어 있지 않았다면
git config list #git 설정 정보를 확인한다.
#git 연결계정을 설정한다.
git config user.name [github 계정이름]
git config user.email [github 계정이메일]
#계정연결을 openssl로 하겠다는 설정을 한다.
git config --global http.sslBackend openssl
#이후 최초 clone, push 등 연결할 경우 user.name과 password를 물어본다.
#username은 [github 계정이름] 을 입력하고
#password는 github 계정의 로그인 패스워드를 사용하는 것이아니라 별도의 openssl key를 생성한 것을 사용해야한다.
#openssl key 생성방법:
#github 접속 > 우측상단 개인 아이콘 > Settings > Developer settings > Personal access tokens > Tokens (classic) > Generate new token > Generate new token (classic) > Note 에 계정용도에 대헌 설명을 단순히 작성. > Expiration > No expiration > Select scopes > reop 체크 > Generate token 클릭 > 이전화면으로 돌아감 > 새로 생성된 키를 복사하여 사용한다.
#주의 사항: 생성된 키는 이후 다시 확인할 수 없으므로, 복사하여 보관하는 것을 추천한다.
원격 상태를 유지하면서 추가하는 방법
작업폴더로 가서 프로젝트 폴더 통째로 복사본을 만들어준다.
D:\github\svelte-springboot-starter
D:\github\svelte-springboot-starter - 복사본
VSCode나 SourceTree에서 bash 터미널을 열어서 진행
D:\github\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