[linux] shell script version compare
개요 linux를 사용하다 보면 version 비교하는 기능이 필요합니다. 특히 기존 설치된 패키지의 version을 확인하여 업데이트할 경우가 있겠죠. 아래와 같이 간단한 shell script로 구현할 수 있습니다.
구글 검색을 해보면 Spring Boot Gradle + 하나의 vueJS Project Build만 나와있는 경우가 많습니다.
조금 더 응용하여 Spring Boot Gradle + 여러개의 vueJS 빌드하는 방법에 대해 공유하고자 합니다.
Vue 프로젝트 구조 .
build.gradle 수정!!
plugins {
/**
* https://github.com/node-gradle/gradle-node-plugin
* nodeJS 빌드를 gradle에서 해줍니다. 계속 유지보수중이라 사용하기 좋아요!
*/
id 'com.github.node-gradle.node' version '3.1.0'
}
node {
// nodeJS 버전을 지정합니다.
version = '14.17.0'
// true일 경우 위에 지정한 node version으로 다운로드 받아서 실행합니다.
// 따로 설치하지 않을려면 download = true로 진행
// false일 경우 global로 설치된 nodeJS가 있어야 합니다.
download = true
// nodeJS 프로젝트 location 지정
// default로 하나의 프로젝트를 지정하도록 합니다.
nodeProjectDir = file("${projectDir}/frontend/project1")
}
/**
* dependsOn: setUp이 걸려있는 task는 먼저 dependsOn을 실행 후 해당 task를 실행합니다.
* task setup은 vueJS 프로젝트에 필요한 package를 install 합니다.
*/
task setUp(type: NpmTask) {
description = "install nodeJS packages"
args = ["install"]
}
/**
* 빌드 대상 vueJS project를 각각 task로 설정합니다.
* workingDir로 각각의 프로젝트 root 폴더를 바라볼 수 있도록 합니다.
*/
task project1Build(type: NpmTask, dependsOn: setUp) {
description = "Build Project1"
workingDir = file("${projectDir}/frontend/project1")
args = ["run", "build"]
}
task project2Build(type: NpmTask, dependsOn: setUp) {
description = "Build Project2"
workingDir = file("${projectDir}/frontend/project2")
args = ["run", "build"]
}
task project3Build(type: NpmTask, dependsOn: setUp) {
description = "Build Project3"
workingDir = file("${projectDir}/frontend/project3")
args = ["run", "build"]
}
/**
* frontend 하위 dir을 돌면서 위 project build task를 실행합니다.
*/
new File("${project.projectDir}/frontend").eachDir { projectName ->
processResources.dependsOn "${projectName}Build"
}
빌드 결과!!
아래 순으로 Task가 진행되는것을 볼 수 있습니다!
3:04:13 오후: Executing task 'build --stacktrace'...
> Task :compileJava UP-TO-DATE
> Task :nodeSetup
> Task :npmSetup SKIPPED
> Task :setUp
audited 1413 packages in 5.638s
78 packages are looking for funding
run `npm fund` for details
found 132 vulnerabilities (119 moderate, 12 high, 1 critical)
run `npm audit fix` to fix them, or `npm audit` for details
> Task :project1Build
> frontend@0.1.0 build /Users/test-project/frontend/project1
> vue-cli-service build
##### vue build target: local
- Building for local...
WARNING Compiled with 2 warnings3:04:36 PM
warning
asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
js/chunk-vendors.3555b132.js (462 KiB)
warning
entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
app (485 KiB)
js/chunk-vendors.3555b132.js
css/app.342c0a50.css
js/app.56e7b3cf.js
File Size Gzipped
../../src/main/resources/static/project1 461.58 KiB 139.39 KiB
/js/chunk-vendors.3555b132.js
../../src/main/resources/static/project1 200.11 KiB 51.43 KiB
/js/chunk-056e7852.0f916084.js
../../src/main/resources/static/project1 21.72 KiB 8.28 KiB
/js/chunk-48d802ba.aba8d5b7.js
../../src/main/resources/static/project1 19.25 KiB 6.50 KiB
/js/app.56e7b3cf.js
../../src/main/resources/static/project1 8.67 KiB 3.23 KiB
/js/chunk-082c73ca.b0789044.js
../../src/main/resources/static/project1 1.52 KiB 0.69 KiB
/js/chunk-27a95d4c.a63c84a3.js
../../src/main/resources/static/project1 1.06 KiB 0.62 KiB
/js/chunk-091955a4.571caf72.js
../../src/main/resources/static/project1 30.17 KiB 6.99 KiB
/css/chunk-056e7852.414581ae.css
../../src/main/resources/static/project1 4.06 KiB 1.42 KiB
/css/app.342c0a50.css
../../src/main/resources/static/project1 2.41 KiB 0.73 KiB
/css/chunk-082c73ca.d4e9cbb2.css
../../src/main/resources/static/project1 0.51 KiB 0.29 KiB
/css/chunk-27a95d4c.b03457a9.css
../../src/main/resources/static/project1 0.38 KiB 0.24 KiB
/css/chunk-091955a4.0584ada6.css
../../src/main/resources/static/project1 0.04 KiB 0.06 KiB
/css/chunk-48d802ba.28bb29d4.css
Images and other types of assets omitted.
DONE Build complete. The ../../src/main/resources/static/project1 directory is ready to be deployed.
INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html
> Task :project2Build
> frontend@0.1.0 build /Users/test-project/frontend/project2
> vue-cli-service build
##### vue build target: local
- Building for local...
WARNING Compiled with 2 warnings3:04:36 PM
warning
asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
js/chunk-vendors.3555b132.js (462 KiB)
warning
entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
app (485 KiB)
js/chunk-vendors.3555b132.js
css/app.342c0a50.css
js/app.56e7b3cf.js
File Size Gzipped
../../src/main/resources/static/project2 461.58 KiB 139.39 KiB
/js/chunk-vendors.3555b132.js
../../src/main/resources/static/project2 200.11 KiB 51.43 KiB
/js/chunk-056e7852.0f916084.js
../../src/main/resources/static/project2 21.72 KiB 8.28 KiB
/js/chunk-48d802ba.aba8d5b7.js
../../src/main/resources/static/project2 19.25 KiB 6.50 KiB
/js/app.56e7b3cf.js
../../src/main/resources/static/project2 8.67 KiB 3.23 KiB
/js/chunk-082c73ca.b0789044.js
../../src/main/resources/static/project2 1.52 KiB 0.69 KiB
/js/chunk-27a95d4c.a63c84a3.js
../../src/main/resources/static/project2 1.06 KiB 0.62 KiB
/js/chunk-091955a4.571caf72.js
../../src/main/resources/static/project2 30.17 KiB 6.99 KiB
/css/chunk-056e7852.414581ae.css
../../src/main/resources/static/project2 4.06 KiB 1.42 KiB
/css/app.342c0a50.css
../../src/main/resources/static/project2 2.41 KiB 0.73 KiB
/css/chunk-082c73ca.d4e9cbb2.css
../../src/main/resources/static/project2 0.51 KiB 0.29 KiB
/css/chunk-27a95d4c.b03457a9.css
../../src/main/resources/static/project2 0.38 KiB 0.24 KiB
/css/chunk-091955a4.0584ada6.css
../../src/main/resources/static/project2 0.04 KiB 0.06 KiB
/css/chunk-48d802ba.28bb29d4.css
Images and other types of assets omitted.
DONE Build complete. The ../../src/main/resources/static/project2 directory is ready to be deployed.
INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html
> Task :project3Build
> frontend@0.1.0 build /Users/test-project/frontend/project3
> vue-cli-service build
##### vue build target: local
- Building for local...
WARNING Compiled with 2 warnings3:04:36 PM
warning
asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
js/chunk-vendors.3555b132.js (462 KiB)
warning
entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
app (485 KiB)
js/chunk-vendors.3555b132.js
css/app.342c0a50.css
js/app.56e7b3cf.js
File Size Gzipped
../../src/main/resources/static/project3 461.58 KiB 139.39 KiB
/js/chunk-vendors.3555b132.js
../../src/main/resources/static/project3 200.11 KiB 51.43 KiB
/js/chunk-056e7852.0f916084.js
../../src/main/resources/static/project3 21.72 KiB 8.28 KiB
/js/chunk-48d802ba.aba8d5b7.js
../../src/main/resources/static/project3 19.25 KiB 6.50 KiB
/js/app.56e7b3cf.js
../../src/main/resources/static/project3 8.67 KiB 3.23 KiB
/js/chunk-082c73ca.b0789044.js
../../src/main/resources/static/project3 1.52 KiB 0.69 KiB
/js/chunk-27a95d4c.a63c84a3.js
../../src/main/resources/static/project3 1.06 KiB 0.62 KiB
/js/chunk-091955a4.571caf72.js
../../src/main/resources/static/project3 30.17 KiB 6.99 KiB
/css/chunk-056e7852.414581ae.css
../../src/main/resources/static/project3 4.06 KiB 1.42 KiB
/css/app.342c0a50.css
../../src/main/resources/static/project3 2.41 KiB 0.73 KiB
/css/chunk-082c73ca.d4e9cbb2.css
../../src/main/resources/static/project3 0.51 KiB 0.29 KiB
/css/chunk-27a95d4c.b03457a9.css
../../src/main/resources/static/project3 0.38 KiB 0.24 KiB
/css/chunk-091955a4.0584ada6.css
../../src/main/resources/static/project3 0.04 KiB 0.06 KiB
/css/chunk-48d802ba.28bb29d4.css
Images and other types of assets omitted.
DONE Build complete. The ../../src/main/resources/static/project3 directory is ready to be deployed.
INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootJar UP-TO-DATE
> Task :jar SKIPPED
> Task :assemble UP-TO-DATE
> Task :compileTestJava UP-TO-DATE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test UP-TO-DATE
> Task :check UP-TO-DATE
> Task :build UP-TO-DATE
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.3/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 34s
9 actionable tasks: 4 executed, 5 up-to-date
3:04:48 오후: Task execution finished 'build --stacktrace'.
gradle build 성공!!
위 코드를 조금만 응용하면 선택한 vueJS project만 build 하는 것도 가능합니다!!
gradle vue build SpringBoot개요 linux를 사용하다 보면 version 비교하는 기능이 필요합니다. 특히 기존 설치된 패키지의 version을 확인하여 업데이트할 경우가 있겠죠. 아래와 같이 간단한 shell script로 구현할 수 있습니다.
jdk 21 출시!!
ci/cd 오픈소스 도구로 가장 많이 사랑 받는 jenkins에 대해 포스팅 해보겠습니다. 먼저 설치부터 해야겠지요? 항상 패키지 매니저로 설치했었는데 이번에는 docker로 설치해보도록 하겠습니다.
개요 github rest API 문서를 보면 재미있는 API들이 있습니다. 오늘은 그 중 최신 release 가져오는 API를 만져보도록 하겠습니다.
개요 intellij에서 shell script 코드를 작성할 때 이런 warning 메시지를 보여주더군요.
springboot 탄생 배경 springboot란 spring framework를 좀 더 쉽게 개발/배포할려는 목적으로 만들어 졌습니다. 2012년 Mike Youngstrom은 spring 프레임워크에서 컨테이너 없는 웹 애플리케이션 아키텍처에 대한 지원을 요청하는 spring...
개요 지난번 spring-initializer를 통해 프로젝트를 생성하여 파일로 다운로드 받았습니다.
개요 springboot3로 메이저 업그레이드 되면서 JPA + querydsl 셋팅 환경에 변화가 생겼습니다. 기존 의존성으로는 작동하지 않고 jakarta classification을 추가해야 작동하는 이슈가 발생합니다. springboot3부터 javax -> jakar...
개요 2022년 하반기에 springboot3가 공식 release 되었습니다. springboot2가 2018년 상반기에 release되고 나서 새롭게 판올림 버전으로 가장 큰 변화로는 아래와 같습니다. spring framework 6 적용 최소 사양 JDK 17 ...
개요 항상 intellij ultimate 버전만 사용하고 있었는데 무슨 바람이 난건지.. intellij ce 버전에 도전하였습니다. springboot 프로젝트 생성이며.. 그 밖에 기본적으로 될꺼라 싶은것 중에 안되는 녀석들도 꽤 있더군요. 이번 시간엔 간단하게 spingbo...
개요 JPA를 spring data jpa + querydsl과의 조합으로 접하는 경우가 많습니다. spring data jpa에서 제공해주는 specification으로도 충분히 해낼수 있지만 querydsl에 비할바는 아닙니다. entity에 wrapper Q클래스를 생성하여 ...
개요 오랫동안 방치했던 블로그를 다시 열면서 jekyll를 다시 설치해봤습니다. 설치 jekyll 프로젝트로 이동하여 아래 명령어를 입력합니다. gem install jekyll bundler Fetching pathutil-0.16.2.gem Fetching terminal-t...
개발자에게 있어 탁월한 검색은 능력은 필수라고 생각됩니다.
bash를 사용하여 yaml 파일을 파싱 및 환경 변수로 손쉽게 등록할 수 있습니다.
https://app.diagrams.net/
구글 검색을 해보면 Spring Boot Gradle + 하나의 vueJS Project Build만 나와있는 경우가 많습니다.
외부 통신에 대한 Error 처리는 앱을 더욱 더 견고하게 만들 수 있습니다. Error 처리를 위해 엔드포인트에 대한 Http Status Code를 억지로 생성하는것은 매우 귀찮은 일이라고 할까요? 보다 간편하게 Mock 서버를 두는게 더 효율적이라고 볼 수 있습니다.
입력 받은 아이디를 체크하여 규칙에 맞게 추천하는 프로그램 개발 7단계의 규칙을 적용해야 하는데 그 내용은 아래와 같다.