ํ๋ก ํธ์๋ Lighthouse CI๋ฅผ ํตํ ์ง์์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ์๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ์ธ์.
ํ๋ก ํธ์๋ Lighthouse CI: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ง์์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋์งํธ ํ๊ฒฝ์์ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ก๋ฉ์ด ๋๋ฆฌ๊ฑฐ๋ ์ต์ ํ๊ฐ ์ ๋๋ก ๋์ง ์์ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์์ ๋ถ๋ง์ ์ฌ๊ณ , ์ฐธ์ฌ๋๋ฅผ ๊ฐ์์ํค๋ฉฐ, ๊ถ๊ทน์ ์ผ๋ก ๋น์ฆ๋์ค์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ Lighthouse CI๊ฐ ํ์ํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ ์ง์์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ ์ํด Lighthouse CI๋ฅผ ๊ตฌํํ๋ ๊ณผ์ ์ ์๋ดํ์ฌ, ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ์ ์ ์ ์ผ๋ก ์๋ณํ๊ณ ํด๊ฒฐํ ์ ์๋๋ก ๋์์ค๋๋ค.
Lighthouse CI๋ ๋ฌด์์ธ๊ฐ?
Lighthouse CI๋ ์ง์์ ํตํฉ ๋ฐ ์ง์์ ์ ๊ณต(CI/CD) ํ์ดํ๋ผ์ธ์ ์ํํ๊ฒ ํตํฉ๋๋ ์คํ์์ค ์๋ ์ฑ๋ฅ ํ ์คํธ ๋๊ตฌ์ ๋๋ค. Google์ Lighthouse ๊ฐ์ฌ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ฑ๋ฅ, ์ ๊ทผ์ฑ, SEO ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. Lighthouse CI๋ฅผ ์ํฌํ๋ก์ฐ์ ํตํฉํจ์ผ๋ก์จ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ , ์ฑ๋ฅ ์ ํ๋ฅผ ์ถ์ ํ๋ฉฐ, ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ์ด ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ธฐ์ฌํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. Lighthouse CI๋ ํน์ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ ์ข ์๋์ง ์์ผ๋ฉฐ ๋ค์ํ ์ค์ ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Github Actions, Jenkins, CircleCI ๋ฑ๊ณผ ๊ฐ์ ์๋น์ค์ Docker ์ปจํ ์ด๋ ๋ด์์ ์คํํ ์ ์์ต๋๋ค.
Lighthouse CI๋ฅผ ์ฌ์ฉํ๋ ์ด์
Lighthouse CI๋ฅผ ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค:
- ์ฑ๋ฅ ์ ํ์ ์กฐ๊ธฐ ๋ฐ๊ฒฌ: ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํ๋ก๋์ ์ ๋๋ฌํ๊ธฐ ์ ์ ์๋ณํฉ๋๋ค.
- ์น์ฌ์ดํธ ์ฑ๋ฅ ํฅ์: ์๋, ์ ๊ทผ์ฑ, SEO๋ฅผ ์ํด ์น์ฌ์ดํธ๋ฅผ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ ์ป์ต๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ : ๋ฐฉ๋ฌธ์์ ์ฐธ์ฌ๋ฅผ ์ ์งํ๋ ๋ ๋น ๋ฅด๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ดํ๋ฅ ๊ฐ์: ๋ก๋ฉ ์๊ฐ์ ์ต์ ํํ์ฌ ์ฌ์ฉ์ ๋ถ๋ง์ ์ค์ด๊ณ ์ฌ์ดํธ๋ฅผ ๋ ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- ์ ํ์จ ์ฆ๊ฐ: ๋ ๋น ๋ฅธ ์น์ฌ์ดํธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ ํ์จ๊ณผ ๊ฐ์ ๋ ๋น์ฆ๋์ค ์ฑ๊ณผ๋ก ์ด์ด์ง๋๋ค.
- ์๋ํ๋ ์ฑ๋ฅ ํ ์คํธ: ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ํด ์ฑ๋ฅ ํ ์คํธ๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์์ฌ ๊ฒฐ์ : ๊ตฌ์ฒด์ ์ธ ์ฑ๋ฅ ์งํ์ ํต์ฐฐ๋ ฅ์ ๋ฐํ์ผ๋ก ์ต์ ํ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ ๋๋ค.
- ์ฅ๊ธฐ์ ์ธ ์ฑ๋ฅ ์ถ์ : ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ์ฌ ์ถ์ธ๋ฅผ ํ์ ํ๊ณ ์ต์ ํ์ ์ํฅ์ ์ธก์ ํฉ๋๋ค.
Lighthouse CI์ ์ฃผ์ ๊ธฐ๋ฅ
- ์๋ํ๋ ๊ฐ์ฌ: CI/CD ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก Lighthouse ๊ฐ์ฌ๋ฅผ ์๋์ผ๋ก ์คํํฉ๋๋ค.
- ์ฑ๋ฅ ์์ฐ: ์น์ฌ์ดํธ๊ฐ ํ์ฉ ๊ฐ๋ฅํ ์ฑ๋ฅ ์๊ณ๊ฐ ๋ด์ ์๋๋ก ์ฑ๋ฅ ์์ฐ์ ์ค์ ํฉ๋๋ค.
- ์ฑ๋ฅ ์ ํ ์ถ์ : ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ ํ๋ฅผ ์ถ์ ํ์ฌ ์์ธ์ด ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ณํ ์ ์์ต๋๋ค.
- ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ: ์น์ฌ์ดํธ ์ฑ๋ฅ ๊ฐ์ ๋ฐฉ๋ฒ์ ๋ํ ์คํ ๊ฐ๋ฅํ ๊ถ์ฅ ์ฌํญ์ด ํฌํจ๋ ์์ธ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ๊ตฌ์ฑ: ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ Lighthouse CI๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- CI/CD ๋๊ตฌ์์ ํตํฉ: Jenkins, CircleCI, GitHub Actions, GitLab CI์ ๊ฐ์ ์ธ๊ธฐ ์๋ CI/CD ๋๊ตฌ์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
- ์คํ ์์ค: Lighthouse CI๋ ์คํ ์์ค ํ๋ก์ ํธ์ด๋ฏ๋ก ๋ฌด๋ฃ๋ก ์ฌ์ฉํ๊ณ ์์ ํ ์ ์์ต๋๋ค.
Lighthouse CI ์ค์ ํ๊ธฐ: ๋จ๊ณ๋ณ ๊ฐ์ด๋
๋ค์์ ํ๋ก์ ํธ์ Lighthouse CI๋ฅผ ์ค์ ํ๊ธฐ ์ํ ์ข ํฉ์ ์ธ ๊ฐ์ด๋์ ๋๋ค:
1. Lighthouse CI CLI ์ค์น
๋จผ์ , npm ๋๋ yarn์ ์ฌ์ฉํ์ฌ Lighthouse CI ๋ช ๋ น์ค ์ธํฐํ์ด์ค(CLI)๋ฅผ ์ ์ญ์ผ๋ก ์ค์นํด์ผ ํฉ๋๋ค:
npm install -g @lhci/cli
yarn global add @lhci/cli
2. Lighthouse CI ๊ตฌ์ฑ
ํ๋ก์ ํธ์ ๋ฃจํธ์ lighthouserc.js
ํ์ผ์ ์์ฑํ์ฌ Lighthouse CI๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์ด ํ์ผ์ ๊ฐ์ฌํ URL, ์ด์ค์
๊ท์น ๋ฐ ๊ธฐํ ๊ตฌ์ฑ ์ต์
์ ์ ์ํฉ๋๋ค.
๋ค์์ lighthouserc.js
ํ์ผ์ ๊ธฐ๋ณธ ์์ ์
๋๋ค:
module.exports = {
ci:
{
collect: {
url: ['http://localhost:3000', 'http://localhost:3000/about']
},
assert: {
preset: 'lighthouse:recommended'
},
upload: {
target: 'temporary-public-storage'
},
},
};
์ค๋ช :
collect.url
: Lighthouse๊ฐ ๊ฐ์ฌํ URL์ ์ง์ ํฉ๋๋ค. ์ด ์์์๋localhost:3000
์์ ์คํ ์ค์ธ ์น์ฌ์ดํธ์ ํํ์ด์ง์ "about" ํ์ด์ง๋ฅผ ๊ฐ์ฌํฉ๋๋ค. ์ด URL์ *์์ ์* ํ๋ก์ ํธ์ ๊ด๋ จ๋ URL(์คํ ์ด์ง ํ๊ฒฝ ํฌํจ)๋ก ๊ต์ฒดํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.assert.preset
: Lighthouse์ ๊ถ์ฅ ์ฌํญ์ ๊ธฐ๋ฐํ ์ฌ์ ์ ์๋ ์ด์ค์ ์ธํธ๋ฅผ ์ ์ฉํ๋lighthouse:recommended
ํ๋ฆฌ์ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์ข์ ์ถ๋ฐ์ ์ด์ง๋ง ํ์์ ๋ฐ๋ผ ์ด๋ฌํ ์ด์ค์ ์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค.upload.target
: Lighthouse CI ๊ฒฐ๊ณผ๊ฐ ์ ๋ก๋๋ ์์น๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.temporary-public-storage
๋ ํ ์คํธ ๋ฐ ๊ฐ๋ฐ์ ์ ์ฉํ์ง๋ง, ํ๋ก๋์ ํ๊ฒฝ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ์๊ตฌ์ ์ธ ์คํ ๋ฆฌ์ง ์๋ฃจ์ (๋์ค์ ์ค๋ช )์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
3. Lighthouse CI๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ๊ธฐ
๋ค์ ๋จ๊ณ๋ Lighthouse CI๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ ๊ฒ์ ๋๋ค. ์ ํํ ๋จ๊ณ๋ CI/CD ์ ๊ณต์ ์ฒด์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง, ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋ CI/CD ๊ตฌ์ฑ์ Lighthouse CI ๋ช ๋ น์ ์คํํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
GitHub Actions ์ฌ์ฉ ์์ :
๋ฆฌํฌ์งํ ๋ฆฌ์ .github/workflows/lighthouse-ci.yml
๋ผ๋ ์ด๋ฆ์ ํ์ผ์ ๋ค์ ๋ด์ฉ์ผ๋ก ์์ฑํฉ๋๋ค:
name: Lighthouse CI
on:
push:
branches: [main]
pull_request:
jobs:
lighthouse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '16.x'
- name: Install dependencies
run: npm ci
- name: Run Lighthouse CI
run: |
npm install -g @lhci/cli@0.11.x
lhci autorun
์ค๋ช :
on.push.branches
:main
๋ธ๋์น๋ก ํธ์๋ ๋ ์ํฌํ๋ก์ฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.on.pull_request
: ํ ๋ฆฌํ์คํธ ์ ์ํฌํ๋ก์ฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.jobs.lighthouse.runs-on
: ์ก์ ์ฌ์ฉํ ์ด์ ์ฒด์ ๋ฅผ ์ง์ ํฉ๋๋ค (์ด ๊ฒฝ์ฐ Ubuntu).steps
: ์ก์์ ์คํ๋ ๋จ๊ณ๋ฅผ ์ ์ํฉ๋๋ค:actions/checkout@v3
: ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฒดํฌ์์ํฉ๋๋ค.actions/setup-node@v3
: Node.js๋ฅผ ์ค์ ํฉ๋๋ค.npm ci
: ์์กด์ฑ์ ์ค์นํฉ๋๋ค.Run Lighthouse CI
: Lighthouse CI ๋ช ๋ น์ ์คํํฉ๋๋ค:npm install -g @lhci/cli@0.11.x
: Lighthouse CI CLI๋ฅผ ์ ์ญ์ผ๋ก ์ค์นํฉ๋๋ค. *์ค์*: ํญ์ ํน์ ๋ฒ์ ์ ๊ณ ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.lhci autorun
: Lighthouse CI๋ฅผ "autorun" ๋ชจ๋๋ก ์คํํ์ฌ ๊ฐ์ฌ๋ฅผ ์๋์ผ๋ก ์์งํ๊ณ ์ฑ๋ฅ ์์ฐ์ ํ์ธํ๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ก๋ํฉ๋๋ค.
CI/CD ํตํฉ์ ์ํ ์ค์ ๊ณ ๋ ค์ฌํญ:
- ์๋ฒ ์์:
lhci autorun
์ ์คํํ๊ธฐ ์ ์ ์น ์๋ฒ๊ฐ ์คํ ์ค์ธ์ง ํ์ธํ์ธ์ (์:npm start
). CI/CD ๊ตฌ์ฑ์ ์๋ฒ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ํ๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐํด์ผ ํ ์๋ ์์ต๋๋ค. - ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ : ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์กดํ๋ ๊ฒฝ์ฐ, Lighthouse CI๋ฅผ ์คํํ๊ธฐ *์ ์* CI/CD ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ด ์คํ๋๋๋ก ํ์ธ์.
- ํ๊ฒฝ ๋ณ์: ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ฒฝ ๋ณ์๊ฐ ํ์ํ ๊ฒฝ์ฐ, CI/CD ํ๊ฒฝ์ ์ด๋ฌํ ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ธ์.
4. Lighthouse CI ์คํ
์ด์ main
๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ํ๊ฑฐ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํ ๋๋ง๋ค Lighthouse CI ์ํฌํ๋ก์ฐ๊ฐ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๋ GitHub Actions ์ธํฐํ์ด์ค์์ ํ์ธํ ์ ์์ต๋๋ค.
5. Lighthouse CI ๊ฒฐ๊ณผ ๋ณด๊ธฐ
Lighthouse CI ๊ฒฐ๊ณผ๋ lighthouserc.js
ํ์ผ์ ์ง์ ๋ ์์น(์: temporary-public-storage
)์ ์
๋ก๋๋ฉ๋๋ค. CI/CD ์ถ๋ ฅ์ ์ ๊ณต๋ ๋งํฌ๋ฅผ ๋ฐ๋ผ ์ด๋ฌํ ๊ฒฐ๊ณผ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด ๊ฒฐ๊ณผ๋ ์น์ฌ์ดํธ์ ์ฑ๋ฅ, ์ ๊ทผ์ฑ, SEO ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด์ค์ ๋ฐ ์ฑ๋ฅ ์์ฐ ๊ตฌ์ฑ
Lighthouse CI๋ฅผ ์ฌ์ฉํ๋ฉด ์น์ฌ์ดํธ๊ฐ ์ฑ๋ฅ ๋ชฉํ๋ฅผ ์ถฉ์กฑํ๋๋ก ์ด์ค์ ๊ณผ ์ฑ๋ฅ ์์ฐ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด์ค์ ์ ํน์ ์ฑ๋ฅ ์งํ(์: ์ฒซ ๋ฒ์งธ ์ฝํ ์ธ ํ์ธํธ, ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ํ์ธํธ)๋ฅผ ์ฌ์ ์ ์๋ ์๊ณ๊ฐ๊ณผ ๋น๊ตํ๋ ๊ท์น์ ๋๋ค. ์ฑ๋ฅ ์์ฐ์ ๋ค์ํ ์ฑ๋ฅ ์งํ์ ๋ํ ํ์ฉ ๊ฐ๋ฅํ ํ๋๋ฅผ ์ ์ํฉ๋๋ค.
๋ค์์ lighthouserc.js
ํ์ผ์์ ์ด์ค์
์ ๊ตฌ์ฑํ๋ ์์ ์
๋๋ค:
module.exports = {
ci: {
collect: {
url: ['http://localhost:3000']
},
assert: {
assertions: {
'first-contentful-paint': ['warn', { maxNumericValue: 2000 }],
'largest-contentful-paint': ['warn', { maxNumericValue: 2500 }],
'cumulative-layout-shift': ['warn', { maxNumericValue: 0.1 }],
'total-blocking-time': ['warn', { maxNumericValue: 500 }],
'categories:performance': ['warn', { minScore: 0.9 }],
'categories:accessibility': ['error', { minScore: 0.8 }],
}
},
upload: {
target: 'temporary-public-storage'
},
}
};
์ค๋ช :
first-contentful-paint
: ์ฒซ ๋ฒ์งธ ์ฝํ ์ธ ํ์ธํธ(FCP)์ ๋ํ ๊ฒฝ๊ณ ์๊ณ๊ฐ์ 2000ms๋ก ์ค์ ํฉ๋๋ค.largest-contentful-paint
: ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ํ์ธํธ(LCP)์ ๋ํ ๊ฒฝ๊ณ ์๊ณ๊ฐ์ 2500ms๋ก ์ค์ ํฉ๋๋ค.cumulative-layout-shift
: ๋์ ๋ ์ด์์ ์ด๋(CLS)์ ๋ํ ๊ฒฝ๊ณ ์๊ณ๊ฐ์ 0.1๋ก ์ค์ ํฉ๋๋ค.total-blocking-time
: ์ด ์ฐจ๋จ ์๊ฐ(TBT)์ ๋ํ ๊ฒฝ๊ณ ์๊ณ๊ฐ์ 500ms๋ก ์ค์ ํฉ๋๋ค.categories:performance
: ์ ์ฒด ์ฑ๋ฅ ์นดํ ๊ณ ๋ฆฌ ์ ์์ ๋ํ ๊ฒฝ๊ณ ์๊ณ๊ฐ์ 0.9๋ก ์ค์ ํฉ๋๋ค.categories:accessibility
: ์ ์ฒด ์ ๊ทผ์ฑ ์นดํ ๊ณ ๋ฆฌ ์ ์์ ๋ํ ์ค๋ฅ ์๊ณ๊ฐ์ 0.8๋ก ์ค์ ํฉ๋๋ค.
์ด์ค์ ๋ ๋ฒจ:
off
: ์ด์ค์ ์ ๋นํ์ฑํํฉ๋๋ค.warn
: ์ด์ค์ ์ด ์คํจํ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.error
: ์ด์ค์ ์ด ์คํจํ๋ฉด Lighthouse CI ์คํ์ ์คํจ ์ฒ๋ฆฌํฉ๋๋ค.
์ด์ค์ ์ฌ์ฉ์ ์ ์:
ํน์ ์๊ตฌ์ ๋ง๊ฒ ์ด์ค์ ์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ค์ํ ์ฑ๋ฅ ์งํ์ ๋ํด ๋ ์๊ฒฉํ ์๊ณ๊ฐ์ ์ค์ ํ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ด๋ จ ์๋ ์ด์ค์ ์ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
Lighthouse CI ์ ๋ก๋ ๋์ ์ ํ
lighthouserc.js
ํ์ผ์ upload.target
์ต์
์ Lighthouse CI ๊ฒฐ๊ณผ๊ฐ ์
๋ก๋๋ ์์น๋ฅผ ์ง์ ํฉ๋๋ค. temporary-public-storage
๋์์ ํ
์คํธ ๋ฐ ๊ฐ๋ฐ์๋ ํธ๋ฆฌํ์ง๋ง ๋ฐ์ดํฐ๊ฐ ์๊ตฌ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ํ๋ก๋์
ํ๊ฒฝ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
๋ค์์ ๋ช ๊ฐ์ง ๋์ฒด ์ ๋ก๋ ๋์์ ๋๋ค:
- Lighthouse CI ์๋ฒ: ํ๋ก๋์ ํ๊ฒฝ์ ๊ถ์ฅ๋๋ ์ ๊ทผ ๋ฐฉ์์ Lighthouse CI ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. Lighthouse CI ์๋ฒ๋ Lighthouse CI ๊ฒฐ๊ณผ์ ๋ํ ์๊ตฌ์ ์ธ ์คํ ๋ฆฌ์ง ์๋ฃจ์ ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ๋ถ์ํ๊ธฐ ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์ํ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ ๋ฐฐํฌํ๊ฑฐ๋ ์์ฒด ์ธํ๋ผ์์ ํธ์คํ ํ ์ ์์ต๋๋ค.
- Google Cloud Storage: Lighthouse CI ๊ฒฐ๊ณผ๋ฅผ Google Cloud Storage ๋ฒํท์ ์ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋น์ฉ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ๋๋ค.
- Amazon S3: Google Cloud Storage์ ์ ์ฌํ๊ฒ, Lighthouse CI ๊ฒฐ๊ณผ๋ฅผ Amazon S3 ๋ฒํท์ ์ ๋ก๋ํ ์ ์์ต๋๋ค.
Lighthouse CI ์๋ฒ ์ค์ ํ๊ธฐ:
Lighthouse CI ์๋ฒ๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค:
- Lighthouse CI ์๋ฒ ์ค์น: npm ๋๋ yarn์ ์ฌ์ฉํ์ฌ Lighthouse CI ์๋ฒ๋ฅผ ์ค์นํ ์ ์์ต๋๋ค:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ: Lighthouse CI ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํฉ๋๋ค. PostgreSQL, MySQL, SQLite ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
.env
ํ์ผ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค. - Lighthouse CI ์๋ฒ ์์:
lhci server
๋ช ๋ น์ ์ฌ์ฉํ์ฌ Lighthouse CI ์๋ฒ๋ฅผ ์์ํฉ๋๋ค. - Lighthouse CI CLI๊ฐ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ:
lighthouserc.js
ํ์ผ์ ์ ๋ฐ์ดํธํ์ฌ Lighthouse CI ์๋ฒ๋ฅผ ์ ๋ก๋ ๋์์ผ๋ก ์ฌ์ฉํ๋๋ก ํฉ๋๋ค:
npm install -g @lhci/server
yarn global add @lhci/server
module.exports = {
ci: {
collect: {
url: ['http://localhost:3000']
},
assert: {
preset: 'lighthouse:recommended'
},
upload: {
target: 'lhci',
serverBaseUrl: 'http://your-lhci-server.com',
token: 'YOUR_LHCI_TOKEN'
},
}
};
http://your-lhci-server.com
์ Lighthouse CI ์๋ฒ์ URL๋ก, YOUR_LHCI_TOKEN
์ ํ๋ก์ ํธ์ ์ก์ธ์ค ํ ํฐ์ผ๋ก ๊ต์ฒดํ์ธ์.
Lighthouse CI ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
Lighthouse CI๋ฅผ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ธ์:
- ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ Lighthouse CI ์คํ: CI/CD ํ์ดํ๋ผ์ธ์ Lighthouse CI๋ฅผ ํตํฉํ์ฌ ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ํด ๊ฐ์ฌ๋ฅผ ์คํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฑ๋ฅ ์ ํ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ์์ฐ ์ค์ : ์น์ฌ์ดํธ๊ฐ ํ์ฉ ๊ฐ๋ฅํ ์ฑ๋ฅ ์๊ณ๊ฐ ๋ด์ ์๋๋ก ์ฑ๋ฅ ์์ฐ์ ์ ์ํฉ๋๋ค.
- ์ฑ๋ฅ ์ถ์ธ ๋ชจ๋ํฐ๋ง: ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ์ถ์ ํ์ฌ ์ถ์ธ๋ฅผ ํ์ ํ๊ณ ์ต์ ํ์ ์ํฅ์ ์ธก์ ํฉ๋๋ค.
- ์ต์ ํ ๋ ธ๋ ฅ์ ์ฐ์ ์์ ์ง์ : ๊ฐ์ฅ ์ค์ํ ์ฑ๋ฅ ์งํ๋ฅผ ๋จผ์ ์ต์ ํํ๋ ๋ฐ ์ง์คํฉ๋๋ค.
- ์ค์ ๋ฐ์ดํฐ ์ฌ์ฉ: ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ํ ๋ ธ๋ ฅ์ ๊ตฌ์ฒดํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Google Analytics๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ์์ฃผ ๋ฐฉ๋ฌธํ๋ ํ์ด์ง๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
- ์ค์ ๊ธฐ๊ธฐ์์ ํ ์คํธ: ์ค์ ๊ธฐ๊ธฐ์์ ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ์ฌ ์ค์ ํ๊ฒฝ์์ ์ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
- ์ ๊ธฐ์ ์ผ๋ก Lighthouse CI ๊ฒฐ๊ณผ ๊ฒํ : ์ ๊ธฐ์ ์ผ๋ก Lighthouse CI ๊ฒฐ๊ณผ๋ฅผ ๊ฒํ ํ๊ณ ์๋ณ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์กฐ์น๋ฅผ ์ทจํด์ผ ํฉ๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ํ์ง ์ ํ ์์ด ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํฉ๋๋ค. ImageOptim(macOS), TinyPNG, ImageKit์ ๊ฐ์ ๋๊ตฌ๊ฐ ์ ์ฉํฉ๋๋ค.
- CSS ๋ฐ JavaScript ์ถ์: CSS ๋ฐ JavaScript ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ถ์(minify)ํฉ๋๋ค. UglifyJS ๋ฐ CSSNano์ ๊ฐ์ ๋๊ตฌ๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๋ธ๋ผ์ฐ์ ์บ์ฑ ํ์ฉ: ๋ธ๋ผ์ฐ์ ์บ์ฑ์ ํ์ฉํ์ฌ ์น์ฌ์ดํธ๊ฐ ์๋ฒ์ ๋ณด๋ด๋ ์์ฒญ ์๋ฅผ ์ค์ ๋๋ค.
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN) ์ฌ์ฉ: CDN์ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ฝํ ์ธ ๋ฅผ ์ ์ธ๊ณ ์๋ฒ์ ๋ฐฐํฌํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์ ์ฌ์ฉ์๋ค์๊ฒ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. Cloudflare ๋ฐ Amazon CloudFront์ ๊ฐ์ ์๋น์ค๊ฐ ์ธ๊ธฐ ์๋ CDN์ ๋๋ค.
- ํ๋ฉด ๋ฐ ์ด๋ฏธ์ง ์ง์ฐ ๋ก๋ฉ: ํ๋ฉด์ ์ฆ์ ๋ณด์ด์ง ์๋ ์ด๋ฏธ์ง์ ๋ํด ์ง์ฐ ๋ก๋ฉ(lazy loading)์ ๊ตฌํํฉ๋๋ค. ์ด๋ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ฐ๋จํ ์ง์ฐ ๋ก๋ฉ์๋
loading="lazy"
์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค ์ ๊ฑฐ: ํ์ด์ง ๋ ๋๋ง์ ์ฐจ๋จํ๋ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ณ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ ์ข ์ข ์ค์ํ CSS๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ค์ํ์ง ์์ CSS ๋ฐ JavaScript๋ฅผ ์ง์ฐ์ํค๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
- JavaScript ์คํ ์๊ฐ ๋จ์ถ: JavaScript ์ฝ๋๋ฅผ ํ๋กํ์ผ๋งํ์ฌ ๋๋ฆฌ๊ฒ ์คํ๋๋ ํจ์๋ฅผ ์๋ณํ๊ณ ์ต์ ํํฉ๋๋ค. ์ฝ๋ ๋ถํ (code splitting) ๋ฐ ํธ๋ฆฌ ์ ฐ์ดํน(tree shaking)๊ณผ ๊ฐ์ ๊ธฐ์ ์ ๋ค์ด๋ก๋ ๋ฐ ์คํํด์ผ ํ๋ JavaScript์ ์์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ณ ๊ธ Lighthouse CI ๊ธฐ์
Lighthouse CI์ ๊ธฐ๋ณธ ์ฌํญ์ ์ต์ํด์ง๋ฉด ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ ๋์ฑ ํฅ์์ํค๊ธฐ ์ํด ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ์ ์ ํ์ํ ์ ์์ต๋๋ค:
- ์ฌ์ฉ์ ์ ์ Lighthouse ๊ฐ์ฌ: ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ด๋ จ๋ ํน์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ Lighthouse ๊ฐ์ฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ํค๋๋ฆฌ์ค ํฌ๋กฌ ๊ตฌ์ฑ: ํน์ ์ฅ์น ์๋ฎฌ๋ ์ด์ ์ด๋ ๋คํธ์ํฌ ์ค๋กํ๋ง ์ค์ ์ ์ฌ์ฉํ๋๋ก ํค๋๋ฆฌ์ค ํฌ๋กฌ์ ๊ตฌ์ฑํฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง ๋๊ตฌ์์ ํตํฉ: ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ํ ๋ณด๋ค ํฌ๊ด์ ์ธ ์๊ฐ์ ์ป๊ธฐ ์ํด ๊ธฐ์กด ๋ชจ๋ํฐ๋ง ๋๊ตฌ(์: New Relic, Datadog)์ Lighthouse CI๋ฅผ ํตํฉํฉ๋๋ค.
- ์๊ฐ์ ํ๊ท ํ ์คํธ: Lighthouse CI๋ฅผ ์๊ฐ์ ํ๊ท ํ ์คํธ ๋๊ตฌ์ ๊ฒฐํฉํ์ฌ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ์๊ฐ์ ๋ณํ๋ฅผ ๊ฐ์งํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ Lighthouse CI: ๊ตญ์ ์น์ฌ์ดํธ ๊ณ ๋ ค์ฌํญ
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ์น์ฌ์ดํธ์ Lighthouse CI๋ฅผ ์ฌ์ฉํ ๋๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ธ์:
- ์ฌ๋ฌ ์์น์์ ํ ์คํธ: ์๋ฒ ์๋ต ์๊ฐ์ ์ฌ์ฉ์ ์์น์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. CDN(์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ)์ ์ฌ์ฉํ๊ณ , ๊ตญ์ ์ฌ์ฉ์์ ์ฑ๋ฅ์ ๋ ์ ํํ๊ฒ ํ์ ํ๊ธฐ ์ํด ๋ค๋ฅธ ์ง๋ฆฌ์ ์ง์ญ์์ Lighthouse CI ๊ฐ์ฌ๋ฅผ ์คํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ์ผ๋ถ CI/CD ์ ๊ณต์ ์ฒด๋ ์คํ๊ธฐ(runner)์ ์ง๋ฆฌ์ ์์น๋ฅผ ์ง์ ํ๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- ๋คํธ์ํฌ ์กฐ๊ฑด ๊ณ ๋ ค: ๋คํธ์ํฌ ์๋์ ์ง์ฐ ์๊ฐ์ ์ ์ธ๊ณ์ ์ผ๋ก ๋งค์ฐ ๋ค์ํฉ๋๋ค. Lighthouse CI ๊ฐ์ฌ ์ค์ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ๋ค์ํ ์ ์ฝ ์กฐ๊ฑด ํ์์ ์น์ฌ์ดํธ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ์ธ์. Lighthouse๋ 3G์ ๊ฐ์ ๋๋ฆฐ ์ฐ๊ฒฐ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋คํธ์ํฌ ์ค๋กํ๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ฝํ ์ธ ํ์งํ: ํ์งํ๋ ์ฝํ ์ธ ๊ฐ ์ ๋๋ก ์ต์ ํ๋์๋์ง ํ์ธํ์ธ์. ์ฌ๊ธฐ์๋ ๋ค๋ฅธ ์ธ์ด ๋ฐ ๋ฌธ์ ์ธํธ์ ๋ํ ์ด๋ฏธ์ง ์ต์ ํ์ ํ์ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํ ์ ์ ํ ์ธ์ฝ๋ฉ์ด ํฌํจ๋ฉ๋๋ค.
- ๊ธ๊ผด ๋ก๋ฉ: ๋ค๋ฅธ ์ธ์ด์ ๋ํ ๊ธ๊ผด ๋ก๋ฉ์ ์ต์ ํํ์ธ์. ๊ธ๊ผด ๋ก๋ฉ ์ค์ ํ ์คํธ๊ฐ ๋ณด์ด์ง ์๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด font-display: swap ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์.
- ํ์ฌ ์คํฌ๋ฆฝํธ: ํ์ฌ ์คํฌ๋ฆฝํธ๋ ํนํ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ ์ํ์ธ์. ํ์ฌ ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ฌํ๊ณ ๋น๋๊ธฐ ๋ก๋ฉ์ด๋ ์ค์ํ ์คํฌ๋ฆฝํธ์ ์์ฒด ํธ์คํ ์ ๊ณ ๋ คํ์ธ์.
- ๋ชจ๋ฐ์ผ ์ต์ ํ: ์ธ๊ณ ์ฌ๋ฌ ์ง์ญ์์ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์ด ๋ณดํธ์ ์ ๋๋ค. ์น์ฌ์ดํธ๊ฐ ๋ชจ๋ฐ์ผ ์ฅ์น์ ์ต์ ํ๋์๋์ง ํ์ธํ๊ณ Lighthouse CI ๊ฐ์ฌ์ ๋ชจ๋ฐ์ผ ๊ด๋ จ ํ ์คํธ๋ฅผ ํฌํจํ์ธ์.
์ผ๋ฐ์ ์ธ Lighthouse CI ๋ฌธ์ ํด๊ฒฐ
Lighthouse CI๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Lighthouse CI๊ฐ "Timeout" ์ค๋ฅ๋ก ์คํจ: ์น์ฌ์ดํธ ๋ก๋ฉ ์๊ฐ์ด ๋๋ฌด ๊ธธ๊ฑฐ๋ Lighthouse CI๊ฐ ์น์ฌ์ดํธ์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
lighthouserc.js
ํ์ผ์ ํ์์์ ๊ฐ์ ๋๋ฆฌ๊ฑฐ๋ ์น์ฌ์ดํธ ์๋ฒ ๋ก๊ทธ์์ ์ค๋ฅ๋ฅผ ํ์ธํด ๋ณด์ธ์. - Lighthouse CI๊ฐ ์ผ๊ด๋์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ : Lighthouse ๊ฒฐ๊ณผ๋ ๋คํธ์ํฌ ์กฐ๊ฑด์ด๋ ๊ธฐํ ์์ธ์ผ๋ก ์ธํด ์คํ ๊ฐ์ ์ฝ๊ฐ์ฉ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ ์์ ์ ์ธ ํ๊ท ์ ์ป๊ธฐ ์ํด ์ฌ๋ฌ ๋ฒ ๊ฐ์ฌ๋ฅผ ์คํํ์ธ์.
- Lighthouse CI๊ฐ ๊ฒฐ๊ณผ ์
๋ก๋์ ์คํจ:
upload.target
๊ตฌ์ฑ์ ํ์ธํ๊ณ Lighthouse CI ์๋ฒ๊ฐ ์คํ ์ค์ด๊ณ ์ ๊ทผ ๊ฐ๋ฅํ์ง ํ์ธํ์ธ์. ๋ํ ์ฌ๋ฐ๋ฅธ ์ก์ธ์ค ํ ํฐ์ด ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ธ์. - Lighthouse CI๊ฐ ์์์น ๋ชปํ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ณด๊ณ : ์ ํ๊ฐ ๊ฐ์ง๋๊ธฐ ์ ์ ์ด๋ฃจ์ด์ง ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ์ฌํ์ธ์. Lighthouse CI ๋ณด๊ณ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ ํน์ ์ฑ๋ฅ ์งํ๋ฅผ ์๋ณํ๊ณ ํด๋น ์์ญ์ ์ต์ ํ ๋ ธ๋ ฅ์ ์ง์คํ์ธ์.
๊ฒฐ๋ก
ํ๋ก ํธ์๋ Lighthouse CI๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ Lighthouse CI๋ฅผ ํตํฉํจ์ผ๋ก์จ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ ์ ์ ์ผ๋ก ์๋ณํ๊ณ ํด๊ฒฐํ์ฌ ์น์ฌ์ดํธ๊ฐ ์ต์ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ต์์ ๊ฒฝํ์ ๋ง๋ค๊ธฐ ์ํด ์ค์ , ์ด์ค์ ๊ท์น ๋ฐ ํ ์คํธ ์์น๋ฅผ ๊ธ๋ก๋ฒ ๋์์ ๋ง๊ฒ ์กฐ์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
์ด ๊ฐ์ด๋์ ์ค๋ช ๋ ๋จ๊ณ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ , ์ดํ๋ฅ ์ ์ค์ด๋ฉฐ, ์ ํ์จ์ ๋์ด๊ณ , ๊ถ๊ทน์ ์ผ๋ก ๋น์ฆ๋์ค ๋ชฉํ๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์ค๋ ๋ฐ๋ก Lighthouse CI๋ฅผ ๊ตฌํํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐํํ์ธ์.