Vue.js로 크롬 확장 프로그램 만들기 강의 - 2부
이전 포스팅에서 index.html과 manifest.json 파일을 이용해서 확장 프로그램을 개발자 모드로 실행시키는 것 까지 진행했습니다.
이번 포스팅에서는 Vue.js와 Vite을 사용해서 프로젝트를 재설계해보도록 하겠습니다.
Vue.js
Vue.js는 웹사이트를 만들기 위해 고안된 프레임워크입니다. 그냥 순수 HTML을 작성하는 것 보다 개발자에게 훨씬 더 많은 이점을 가져다주기 때문에 사용합니다.
Vue.js: The Progressive JavaScript Framework
이 Vue.js를 프로젝트에 제대로 구현하려면 사실 프론트엔드 지식이 많이 필요합니다. Webpack이나 Rollup같은 번들러 사용법과, 자바스크립트 모듈 시스템에 대한 이해가 필요하기 때문입니다.
하지만 걱정마세요. 우리는 남들이 만든 좋은 툴을 그저 가져다 사용하면 됩니다. 물론 나중에는 이게 왜 작동하는지 내부 구조나 기술들을 알고 계셔야 합니다만, 아마 아주 나중에 저절로 관심이 생기실테니 그 때 공부해보시길 바랍니다.
제가 소개할 남들이 만든 툴은 바로 Vite 입니다.
Vite: Next Generation Frontend Tooling
문서에 따르면 빗 이라고 읽으면 된답니다. 불어로 빠른 이라는 뜻입니다.
Vite을 사용하면 복잡한 설정들을 직접 구현할 필요가 없습니다. 그리고 Vue 만을 위한 툴은 아니고, React나 Svelte같은 다른 프레임워크도 모두 제공합니다.
프로젝트 새로 구성하기
일단 기존에 만들었던 vue-extension 디렉토리는 지워주세요. vite를 이용해 새로 구성할겁니다.
$ npm init @vitejs/app vue-extension
터미널이 몇 가지 물어볼텐데, vue와 javascript를 선택해주세요.
정상적으로 진행이 되었다면 해당 디렉토리로 이동 후, 패키지를 설치해줍니다.
$ cd vue-extension
$ npm install
$ npm run dev
이렇게 까지 하면 Vite이 http://localhost:3000 주소로 개발 서버를 열어줍겁니다. 브라우저를 통해 접속해보세요.

프로젝트 구조
자바스크립트 프로젝트라면 반드시 필요한 파일이 있습니다. 바로 package.json 입니다. 이 파일은 현재 이 디렉토리가 자바스크립트 프로젝트라는 걸 의미합니다. 또한 이 파일에 프로젝트 이름이나 버전, 외부 패키지 이름들을 적어줄 수 있습니다.
그럼 Vite이 만들어 준 package.json 파일을 살펴보죠.
{
"name": "vue-extension",
"version": "0.0.0",
"scripts": {
"dev": "vite",
"build": "vite build",
"serve": "vite preview"
},
"dependencies": {
"vue": "^3.0.5"
},
"devDependencies": {
"@vitejs/plugin-vue": "^1.2.2",
"@vue/compiler-sfc": "^3.0.5",
"vite": "^2.3.0"
}
}
이 package.json 파일을 제대로 설명하기 위해 또 다른 포스팅이 필요할 정도로 알아야 할 내용이 굉장히 많습니다만, 일단은 이 프로젝트를 진행하기 위해 알아야할 부분만 간단하게 설명하겠습니다.
name: 프로젝트 이름입니다. 외부로 배포하지 않는다면 무시해도 됩니다.version: 프로젝트 버전입니다. 외부로 배포하지 않는다면 무시해도 됩니다.scripts: 커맨드라인 명령어를 정의할 수 있습니다. 예를 들어dev의 경우vite라는 값이 정의되어있는데, 터미널에npm run dev이라는 명령어를 입력하면 대신vite를 실행하게 됩니다.dependencies: 외부 패키지들을 목록입니다. 여기에 패키지들을 적고npm install명령어를 입력하면 프로젝트 루트 디렉토리에node_modules폴더가 생기고, 이 밑에 적어둔 모든 패키지가 설치됩니다.dependencies와devDependencies와의 차이는 일단 무시하세요.
우리가 좀 더 알아야 할 부분은 scripts 부분입니다. 아래 내용은 vite 프로젝트에 대해서만 유효합니다.
npm run dev: 개발 서버를 열어줍니다. 기본값은http://localhost:3000입니다.npm run build: 프로덕션 (배포)용 프로젝트를 위해 코드를 정제합니다. 그리고 그 결과물을dist폴더로 내보냅니다. 보통 이 작업을 build 라고 합니다.npm run serve: 빌드된 프로젝트를 실행시킵니다. 역시 서버가 열립니다. 기본값은http://localhost:5000입니다.
패키지 목록을 보니, 현재 Vue 최신 버전인 Vue 3가 설치되어있습니다. 2버전과 3버전은 차이가 꽤 크고, 3 버전에서 정말 많은 개선이 이루어졌으니 혹시라도 2.x 이하의 버전을 사용하고 계셨던 분들이라면, 이번 기회에 3.x 버전을 사용해보세요.
Vite을 확장 프로그램으로 만들기
간단합니다. 이전에 만들어두었던 manifest.json 파일을 public 폴더에 넣어주고 빌드하면 됩니다.
public 폴더에 넣는 이유는 vite가 프로젝트를 빌드할 때 public 폴더에 있는 파일들의 코드는 건들지 않고 바로 dist 폴더로 옮겨주기 때문입니다.
$ touch public/manifest.json
$ npm run build
이렇게하면 manifest.json 파일이 포함된 결과물이 dist 폴더로 내보내집니다. 크롬 확장 프로그램 관리자 페이지에서 이 dist를 로드하면 정상적으로 확장 프로그램으로 작동하는 걸 확인할 수 있습니다.

하지만 여기서 큰 문제가 하나 있습니다.
우리가 크롬 확장 프로그램을 개발할 때 계속해서 앱 화면을 확인해야하는데, 매번 npm run build 를 입력하면서 개발을 할 순 없겠죠. 엄청난 시간 낭비일겁니다.
해결 방법은 간단합니다. package.json의 script.build 부분을 다음과 같이 수정해주세요.
{
"scripts": {
"build": "vite build --watch"
}
}
이제 개발할 때 npm run dev 대신에 npm run build 를 실행하면, 개발 서버처럼 동작하되 코드를 수정할 때 마다 계속해서 빌드를 하게됩니다. 이렇게 하면 계속해서 build 명령어를 입력하지 않아도 되겠죠.
근데 여기서 또 다른 문제가 하나 있다면, 일반 웹사이트 개발과는 다르게 크롬 확장 프로그램은 앱 특성상 코드 변경 후 화면을 확인 할 때 창을 껐다 켜야 변경사항을 확인할 수 있습니다.
저는 그냥 껐다 켰다 하면서 개발하고 있지만, 이게 번거로우시다면 npm run dev를 이용해 localhost에서 개발하고 배포 전 테스트 할 때만 창으로 확인해도 상관없습니다. 편한 방법으로 개발하시면 되겠습니다.
저는 브라우저에서 테스트하고 싶진 않으니 scripts 명령어를 크롬 확장 프로그램에 좀 더 맞게끔 수정하고, 결과물을 압축해주는 기능까지 추가해보록 하겠습니다.
압축을 하기 위해서는 패키지를 하나 설치해야합니다. 설치 후 코드를 변경해주세요.
$ npm install -D bestzip
{
"scripts": {
"dev": "vite build --watch"
"build": "bestzip dist.zip dist/"
}
}
이제 평소 개발을 할 때는 npm run dev을 이용해 감시 모드로 빌드를 하고, 앱을 배포할 시기가 오면 npm run build 명령어를 이용해 dist 폴더를 dist.zip 파일로 만들어주면 됩니다.
결과물을 압축하는 이유는, 이후 확장 프로그램을 스토어에 배포할 때 .zip 파일로 제출해야하기 때문입니다.
2부 마무리
2부 강의에서 Vue를 설치하긴 했지만, 막상 뷰 코드를 열어보지도 못했네요. 하지만 프로젝트 구조를 잘 잡아두었으니 이제 다음 강의에서는 코드 작성에 좀 더 치중해보도록 하겠습니다.
같은 카테고리의 다른 글
[Nuxt 3] Composition API로 자동 스크롤링 기능 구현하기
이번 포스팅에서는 실시간 채팅 서비스에서 새로운 대화 내용이 추가되었을 때 자동으로 스크롤이 계속해서 아래로 내려가면서, 스크롤을 조작함에 따라 자동 스크롤이 활성화/비활성화되는 기능을 Vue 3에서 새로 추가된 Composition API를 통해 만들어볼겁니다.
Twilio 번호 구매 없이 연락처 인증 서비스 5분만에 구현하기
이번 포스팅에선 Twilio를 이용해 Node.js에서 개인 번호를 발급받지 않고, 핸드폰 번호 인증을 매우 간단하게 구현하는 방법에 대해 소개해드리겠습니다.
[Nuxt 3] 사이드 프로젝트 만들기 - 개발 환경 설정편
저번 사이드 프로젝트 만들기 - 기획편의 다음 편입니다. 이번엔 nuxt3의 주요 변경사항 일부를 알아보고, 쾌적한 개발 환경을 위해 몇 가지 세팅을 해보도록 하겠습니다.
[Nuxt 3] 사이드 프로젝트 만들기 - 기획편
올해 첫 개발 관련 주제를 뭘로할까 고민하다가 사이드 프로젝트 아이디어가 떠올라서 그걸 같이 만들어볼까 합니다. 하지만 이미 잘 알고 있던 기술을 사용해서 만들면 재미없겠죠. 사이드 프로젝트는 역시 신기술을 이용해서 만드는게 가장 좋습니다. 나만의 프로젝트를 만들면서 최신 기술도 마음껏 써볼 수 있으니까요.
평생 무료로 반응형 이메일 템플릿 무한대로 만들기 - mjml.io
저는 이메일을 데스크톱과 모바일 환경에서 매일매일 확인합니다. 그런데 아직도 모바일 디스플레이에 최적화되지 않은 이메일을 받을 때가 많습니다.
평생 무료로 커스텀 이메일 사용하기
안녕하세요. 또 다시 찾아온 평생 무료 시리즈입니다. 저는 틈만나면 1인 사이드 프로젝트를 진행하기 때문에, 어떻게든 공짜로 서버를 돌리기 위해 온갖 노력을 하고 있습니다. 그래서 무료로 이용하는 방법에 관한 글을 몇 개 올렸는데 GA를 살펴보니 다른 주제보다 조회수가 높더군요. 역시 공짜가 좋네요.
클립보드 이미지를 1초만에 링크로 만드는 툴 개발하기
저는 이 블로그를 운영하면서 가장 귀찮은 일이 하나 있습니다. 바로 이미지 주소를 만드는 일인데요, 저는 @nuxt/content 모듈을 이용해 마크다운 포맷을 이용하는 정적 블로그를 운영 중이라 글 작성 중에 원격 이미지 주소를 삽입하는 기능을 사용하지 않습니다.
평생 무료인 모니터링 도구 10분만에 만들기
서버를 운영하다보면 예상치 못한 서버 다운이나 응답 속도 저하를 반드시 겪게 됩니다. 원인은 둘째 치구요. 근데 문제는 서버 장애를 원천 차단할 방법이 사실상 없기 때문에, 우리 개발자들이 24시간 눈을 뜨고 지켜볼 수 밖에 없겠습니다.
Vue.js로 크롬 확장 프로그램 만들기 강의 - 3부
이전 포스팅에서는 Vite을 이용해 크롬 확장 프로그램을 만들기 위한 기본적인 프로젝트 환경 설정까지 마쳤습니다. 본격적으로 Vue.js 코드를 작성해보도록 합시다.
정말 너무 쉬운 Docker
우리가 Docker를 사용해야하는 가장 큰 이유는, 어떤 컴퓨터에서든 똑같은 개발 환경을 보장해주기 떄문입니다. 로컬 컴퓨터에서 열심히 개발하고 AWS에 코드를 올렸는데, 에러를 마주하며 스트레스를 받았던 경험이 한 번쯤은 있을겁니다. 내 컴퓨터랑 클라우드 컴퓨터의 환경이 100% 똑같지 않기 때문이죠. 근데 이 어려움을 한 번에 해결해준다? 쓰지 말아야 할 이유가 없습니다.
웹소켓과 socket.io
예전에 회사 프로젝트를 진행할 때, 지도에 실시간으로 사용자의 위치를 보여주는 기능이 필요해서 socket.io 를 사용해서 구현했던 적이 있습니다.
Vue.js로 크롬 확장 프로그램 만들기 강의 - 1부
제가 최근 우연히 크롬 확장 프로그램을 개발했는데, 이게 생각보다 꽤 괜찮은 시장이라는 걸 알게 되었습니다.
웹팩보다 100배 빠른 번들러, esbuild
이번 포스팅은 떠오르는 차세대 자바스크립트 번들러 esbuild에 대한 내용입니다. 작년 Github에서 떠오르는 번들링 프로젝트 중 1위를 차지했고, 오늘을 기준으로 20만개의 가까운 Github Star를 받았습니다.
Rollup.js - 플러그인으로 완성도를 높이다
지난 포스팅에서 rollup.js 를 이용해 두 개의 자바스크립트 파일을 하나로 묶고, rollup.config.js 파일을 구성해서 CLI가 아닌 스크립트로 설정 파일을 관리하는 것 까지 진행했습니다.
Rollup.js - 번들링, 파일을 하나로 합쳐보자
번들링 이라는 말을 프론트엔드 개발자라면 많이 들어보셨을겁니다. 번들링은, 파일을 하나로 묶는 것을 말합니다. 그럼 왜 굳이 파일을 하나로 묶어야 할까요? 바로 HTTP 통신의 특성 때문입니다.
코인 시세 1초만에 보는 크롬 확장 프로그램 만들기
가상화폐 거래소 API를 활용해 브라우저에서 단축키로 빠르게 코인 시세를 확인할 수 있는 툴을 크롬 확장 프로그램으로 만들어보았다.
평생 무료로 개인 블로그 운영하기
거의 대부분의 개발자들이 개인 블로그를 운영하라고 얘기한다. 나도 그렇게 생각한다. 왜냐면 분명히 내가 작성했던 코드인데도, 일주일만 지나도 기억이 안나기 때문이다. 그리고 웬만하면 공개해서 작성하라고 하고 싶다. 이미 우리는 누군가가 옛날에 썼던 글을 보고, 문제를 해결한 경험히 굉장히 많기 때문이다. 나는 이런 개발자들의 문화가 너무 좋다. 이런 개발자들의 문화가 다른 업종에도 접목된다면 정말 좋으련만.
Firebase를 대체할 오픈소스 프로젝트, Supabase
Supabase는 구글 Firebase를 엔터프라이즈 레벨에서도 사용 가능하도록 만든 오픈소스 프로젝트이다. 현재는 베타 서비스이다.