<p>gatsby build๋Š” gatsby develop์˜ CSS์™€ ๋‹ค๋ฅธ CSS๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.</p>

์— ๋งŒ๋“  2018๋…„ 09์›” 26์ผ  ยท  69์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: gatsbyjs/gatsby

๋‚ด ์ตœ๊ทผ ํ‘ธ์‹œ์—์„œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฉ๊ธˆ ์•Œ์•„ ์ฐจ ๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€๋Š” ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

Netlify ๊ณ„์ •์ด GitLab์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฑฐ๊ธฐ์—์„œ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

# 5734์—์„œ ์ œ์•ˆํ•œ ์กฐ์น˜๋ฅผ ๋”ฐ๋ž์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์–ธ๊ธ‰ ๋œ ์˜คํ”„๋ผ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ์ตœ๊ทผ์— BrowserslistError : Unknown browser query dead . ๋‚ด ๊ธ€๋กœ๋ฒŒ ๊ฐœ์ธ ๋น„ ํŒจํ‚ค์ง€๋ฅผ 2.X์—์„œ 1.9.X๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ๊ฒฐ๊ณผ์ ์œผ๋กœ์ด CSS ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

... ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” https://gitlab.com/sharemeals/gatsby-site์—์„œ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ ๋‚ด package.json์— gatsby-plugin-offline ํŒจํ‚ค์ง€๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฑฐ๊ธฐ์™€ node_modules์—์„œ ์ œ๊ฑฐํ•ด๋„ ์ฐจ์ด๊ฐ€์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ์„ค์น˜ํ–ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

help wanted bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—ด์–ด์ฃผ์„ธ์š”.

๋ชจ๋“  69 ๋Œ“๊ธ€

@ jonathan-chin gatsby info --clipboard ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ด€๋ จ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ๊ณต์œ  ํ•œ ์ €์žฅ์†Œ์˜ package.json ์—์„œ Gatsby v1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. Gatsby v1์— gatsby-cli ๋ฒ„์ „ 1.x.x ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. gatsby-cli ๋ฒ„์ „ 2.x.x ์€ Gatsby v2 ์šฉ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.

  System:
    OS: macOS High Sierra 10.13.6
    CPU: x64 Intel(R) Core(TM) i5-6360U CPU @ 2.00GHz
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 9.4.0 - /usr/local/bin/node
    Yarn: 1.3.2 - /usr/local/bin/yarn
    npm: 6.4.1 - /usr/local/bin/npm
  Browsers:
    Chrome: 69.0.3497.100
    Safari: 12.0
  npmPackages:
    gatsby: ^1.9.277 => 1.9.278
    gatsby-image: ^1.0.24 => 1.0.55
    gatsby-link: ^1.6.28 => 1.6.46
    gatsby-plugin-canonical-urls: ^1.0.11 => 1.0.18
    gatsby-plugin-google-analytics: ^1.0.12 => 1.0.31
    gatsby-plugin-google-fonts: 0.0.3 => 0.0.3
    gatsby-plugin-material-ui: ^0.1.3 => 0.1.3
    gatsby-plugin-nprogress: ^1.0.10 => 1.0.14
    gatsby-plugin-react-helmet: ^1.0.5 => 1.0.8
    gatsby-plugin-react-next: ^1.0.11 => 1.0.11
    gatsby-plugin-sass: ^1.0.26 => 1.0.26
    gatsby-plugin-sharp: ^1.6.48 => 1.6.48
    gatsby-remark-autolink-headers: ^1.4.8 => 1.4.19
    gatsby-remark-copy-linked-files: ^1.5.36 => 1.5.37
    gatsby-remark-external-links: ^0.0.4 => 0.0.4
    gatsby-remark-images: ^1.5.67 => 1.5.67
    gatsby-remark-responsive-iframe: ^1.4.19 => 1.4.20
    gatsby-source-filesystem: ^1.5.8 => 1.5.39
    gatsby-transformer-remark: ^1.7.21 => 1.7.44
    gatsby-transformer-sharp: ^1.6.14 => 1.6.27
  npmGlobalPackages:
    gatsby-cli: 2.0.0-rc.1
    gatsby: 1.9.278

๊ธ€๋กœ๋ฒŒ gatsby-cli๋ฅผ 1.9.X๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด CSS ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. 2.0.0-rc.1๋กœ ์œ ์ง€ํ•˜๋ฉด BrowserslistError: Unknown browser query dead ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@ jonathan-chin gatsby-cli ๋ฒ„์ „ 1.9.x ์—์„œ CSS ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ค‘์ธ Gatsby ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋ฏ€๋กœ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

๋ณต์ œ ์ €์žฅ์†Œ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์‚ดํŽด ๋ณผ๊ฒŒ์š”.

@ jonathan-chin์ด ๊ฐœ๋ฐœ๊ณผ ๋นŒ๋“œ์—์„œ ์ •ํ™•ํžˆ ์–ด๋–ค CSS๊ฐ€ ๋‹ค๋ฅธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”.
์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋ฉฐ ์˜ˆ์ƒ๋˜๋Š” ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.
screen shot 2018-09-27 at 1 39 24 pm

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋นŒ๋“œ์—์„œ ์–ป์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
screen shot 2018-09-27 at 1 35 23 pm

CSS ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ด์ „์— ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CSS๊ฐ€ ์˜ํ–ฅ์„๋ฐ›์ง€ ์•Š์€ ๋งˆ์ง€๋ง‰ ์ข‹์€ ๋นŒ๋“œ๋Š” https://gitlab.com/sharemeals/gatsby-site/commit/4342a715d6a1cdcb2808e5450819753be6f56a19

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ˆ˜์ •์€ # 8092๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@ jonathan-chin ์ˆ˜์ • ์‚ฌํ•ญ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ ์™€์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฐธ๊ณ  : ์•„์ง ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด Gatsby ๋ฌธ์„œ์˜ How to Contribute ์„น์…˜์— gatsby-dev-cli๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋ฅผ ํ…Œ์ŠคํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

๋˜ํ•œ @ jonathan-chin์€ Gatsby v1์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ์–ป์œผ๋ ค๋ฉด Gatsby v2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@DSchau ์ด๊ฒƒ์œผ๋กœ ๋Œ์•„ ์˜ค๋Š” ๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜

๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ v2๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ v2 ์Šคํƒ€ํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ํ•˜๋‚˜์”ฉ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค (ํ•„์š”์— ๋”ฐ๋ผ ๋ณต์‚ฌ ๋ฐ ์ˆ˜์ •). ์ด ๊ฒฝ์šฐ gatsby develop์€ gatsby ๋นŒ๋“œ์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ ๋น„ ๋นŒ๋“œ
screen shot 2018-10-07 at 7 03 44 pm

๊ฐœ์ธ ๋น„ ๊ฐœ๋ฐœ
screen shot 2018-10-07 at 7 03 48 pm

๋นŒ๋“œ ๋ฐ ๊ฐœ๋ฐœ์‹œ ๋™์ผํ•œ ๋‘ ์š”์†Œ์˜ CSS ์Šคํƒ€์ผ ๋น„๊ต :

์ง“๋‹ค:

.jss94 {
  color: #fff;
  font-size: 0.875rem;
  font-weight: 500;
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  text-transform: uppercase;
}

๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๋‹ค:

.MuiTypography-headline-88 {
  color: #fff;
  font-size: 1.5rem;
  font-weight: 400;
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  line-height: 1.35417em;
}

v2์˜ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ ์š”์†Œ์—๋กœ๋“œํ•˜๋Š” scss๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๋จธํ‹ฐ๋ฆฌ์–ผ UI๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ค‘์—๋Š” ์ž˜ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋นŒ๋“œ์—์„œ๋Š” ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์›์ธ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

import '../scss/style.scss';

@ jonathan-chin v2์—์„œ ๋˜๋Š” ์œ„์˜ @DSchau ์˜ ์˜๊ฒฌ ์— ์–ธ๊ธ‰ ๋œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์ด๊ฒƒ์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@kakadiadarpan ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ํ๋ฆ„์„ ์„ค์ •ํ•  ์ˆ˜์žˆ๋Š” ๋Šฅ๋ ฅ (์˜ˆ : ์‹œ๊ฐ„)์ด ์—†์Šต๋‹ˆ๋‹ค.

PR ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ ์ œ๊ฐ€ ๊ฒช๊ณ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  PR์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@kakadiadarpan ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, ๋ฐฉ๊ธˆ ์ด์ƒํ•œ ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์ดํŠธ๊ฐ€ ์ฒ˜์Œ๋กœ๋“œ ๋  ๋•Œ CSS๊ฐ€ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋ฉด CSS๊ฐ€ ์ œ๋Œ€๋กœ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1) https://sharemeals.org/ ๋กœ๋“œ
์•„๋ž˜์—์žˆ๋Š” ์—๋จธ์Šจ ์ธ์šฉ๋ฌธ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.
screen shot 2018-10-11 at 7 21 04 pm

2) ์™ผ์ชฝ ์ƒ๋‹จ ์‚ฌ์ดํŠธ ์ด๋ฆ„์„ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค. ์‚ฌ์ดํŠธ๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š๊ณ  ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์—๋จธ์Šจ ๊ฒฌ์ ์ด ์˜ˆ์ƒ๋Œ€๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
screen shot 2018-10-11 at 7 22 14 pm

(์—๋จธ์Šจ ์ธ์šฉ๋ฌธ์€ ๋‹ค๋ฅธ CSS ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ˆˆ์— ์ž˜ ๋„๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ถ€๋ถ„ ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค)

@ jonathan-chin ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณตํ•˜์‹  ๋‹จ๊ณ„๋กœ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://sharemeals.org/์— Gatsby v1 ๋˜๋Š” v2 ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

~์ด ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ~

~ injectGlobal ์‚ฌ์šฉํ•  ๋•Œ gatsby build ์‹คํ–‰ ํ•œ ํ›„ ๋‹ค๋ฅธ ์Šคํƒ€์ผ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค : https://ivorpad.com/about~

~ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋œ ํ›„ '์“ฐ๊ธฐ'๋˜๋Š” '์ž‘์—…'๋งํฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉด ์Šคํƒ€์ผ์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ~

์ œ๋ชฉ ์Šคํƒ€์ผ์„ ์ „์—ญ ๋Œ€์‹  page.js ๋กœ ์ด๋™ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 System:
    OS: macOS High Sierra 10.13.5
    CPU: x64 Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 8.11.4 - ~/n/bin/node
    Yarn: 1.2.1 - /usr/local/bin/yarn
    npm: 6.4.1 - ~/n/bin/npm
  Browsers:
    Chrome: 69.0.3497.100
    Firefox: 62.0.2
    Safari: 11.1.1
  npmPackages:
    gatsby: ^2.0.7 => 2.0.8
    gatsby-plugin-google-analytics: ^2.0.0-rc.2 => 2.0.0-rc.2
    gatsby-plugin-google-fonts: ^0.0.4 => 0.0.4
    gatsby-plugin-react-helmet: ^3.0.0-rc.1 => 3.0.0
    gatsby-plugin-styled-components: ^3.0.0 => 3.0.0
    gatsby-plugin-typography: ^2.2.0 => 2.2.0
    gatsby-remark-prismjs: ^3.0.1 => 3.0.1
    gatsby-source-contentful: ^2.0.1-beta.15 => 2.0.1
    gatsby-transformer-remark: ^1.7.44 => 1.7.44

"gatsby": "^1.9.277" ์‚ฌ์šฉํ•˜๋Š” @kakadiadarpan

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ˆ˜์ •์€ # 8092๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@ jonathan-chin ์ˆ˜์ • ์‚ฌํ•ญ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ ์™€์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฐธ๊ณ  : ์•„์ง ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด Gatsby ๋ฌธ์„œ์˜ How to Contribute ์„น์…˜์— gatsby-dev-cli๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋ฅผ ํ…Œ์ŠคํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

@ jonathan-chin์ด ๋Œ“๊ธ€์—์„œ @DSchau ๊ฐ€ ์ œ๊ณต ํ•œ ์ œ์•ˆ์„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@kakadiadarpan ๋ฐฉ๊ธˆ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” gatsby-cli-dev๋ฅผ ์„ค์น˜ํ•˜๊ณ , ๋ถ„๊ธฐํ•˜๊ณ  ๋‹น๊ธฐ๊ณ , ๋ถ„๊ธฐ๋ฅผ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์ง€์†๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ƒˆ node_modules / gatsby๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ์ด์ „ ๊ฒƒ์ด ์•„๋‹Œ์ง€ ์–ด๋–ป๊ฒŒ ๋‹ค์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Gatsby 1.XX๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ œ์•ˆ ๋œ ์ˆ˜์ • ์‚ฌํ•ญ์—†์ด ๋” ๋งŽ์€ ์กฐ์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

(๋‚˜๋Š” Gatsby 2.XX๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๋ณ„๋„๋กœ ์ œ์•ˆ ๋œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค)

์›ํ•˜๋Š” ์Šคํƒ€์ผ์— ๋Œ€ํ•œ jss ํด๋ž˜์Šค๊ฐ€ ์ดˆ๊ธฐ ํŽ˜์ด์ง€๋กœ๋“œ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ .jss58์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€๋ณด๊ณ ์žˆ๋Š” ์š”์†Œ๋Š” ์ดˆ๊ธฐ๋กœ๋“œ์—์„œ .jss58์„ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŽ˜์ด์ง€ ์š”์ฒญ์„ ํ•œ ํ›„์— ๋งŒ โ€‹โ€‹(๋™์ผํ•œ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋”๋ผ๋„) ์š”์†Œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ .jss58์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ ์šฉ ํ•  jss ํด๋ž˜์Šค๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ดˆ๊ธฐ๋กœ๋“œ์—๋Š” ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์ง€๋งŒ ๋ชจ๋“  ํ›„์† ํŽ˜์ด์ง€ ์š”์ฒญ์—๋Š” ๋‹ค๋ฅธ๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

ํŽธ์ง‘ : ๋‹ค๋ฅธ ์ฃผ์š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์—์„œ ๋‚ด svg ์•„์ด์ฝ˜์€ ํŽ˜์ด์ง€ ์š”์ฒญ์— ๊ด€๊ณ„์—†์ด ์™„์ „ํžˆ๋กœ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
screen shot 2018-10-31 at 2 29 47 pm
์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š” ๋Œ€์‹  ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
screen shot 2018-10-31 at 2 29 51 pm

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Gatsby ๊ฐœ๋ฐœ ๋ฐ Gatsby ๋นŒ๋“œ ๋ฒ„์ „์€ ์ €์—๊ฒŒ ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ง์ ‘ ๋ฐฉ๋ฌธํ•˜๊ฑฐ๋‚˜ material-ui ๊ตฌ์„ฑ ์š”์†Œ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋ฉด ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ CSS๊ฐ€ ์†์ƒ๋ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ์†Œ์Šค์— ์žˆ์ง€๋งŒ ์š”์†Œ์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ํŽ˜์ด์ง€๋กœ <Link> ๋ฅผ ๋”ฐ๋ผ ๊ฐ€๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์‹คํ–‰ํ•˜๋ฉด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค gatsby build ๋™์•ˆ gatsby develop ์‹คํ–‰๋˜๋ฉด, ๊ฐœ๋ฐœ ๊ฐœ์ธ ๋น„ ๋ฒ„์ „์€ ๋˜ํ•œ ๊ฐœ์ธ ๋น„ ๋นŒ๋“œ ๋ฒ„์ „๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ–‰๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

System:
    OS: Linux 3.10 Red Hat Enterprise Linux Workstation 7.3 (Maipo)
    CPU: x64 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
    Shell: 4.2.46 - /bin/bash
  Binaries:
    Node: 11.1.0 - /usr/bin/node
    Yarn: 1.12.1 - /usr/bin/yarn
    npm: 6.4.1 - /usr/bin/npm
  Browsers:
    Chrome: 70.0.3538.77
  npmPackages:
    gatsby: 2.0.37 => 2.0.37
    gatsby-cli: 2.4.4 => 2.4.4
    gatsby-plugin-typography: 2.2.1 => 2.2.1
    gatsby-source-atom: 0.1.0 => 0.1.0
    gatsby-source-ghost: 2.1.2 => 2.1.2
  npmGlobalPackages:
    gatsby-cli: 2.4.4

(์ €๋Š” gatsby-plugin-offline์„ ์‚ฌ์šฉํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค)

http://pawanhegde.netlify.com ์—์„œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์†Œ์Šค๋Š” https://gitlab.com/PawanH/pawanh.gitlab.io/tree/gatsbyjs์— ์žˆ์Šต๋‹ˆ๋‹ค.

"์˜ˆ์ƒ"๋ฒ„์ „์„ ๋ณด๋ ค๋ฉด ํ•˜๋‹จ ๊ทผ์ฒ˜์—์žˆ๋Š” ์ฝ”๋ฏนํ•˜๊ฒŒ ํฐ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค.

์•„์ง # 8092์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ์‹œ๋„ ํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์•„์ง # 8092์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ์‹œ๋„ ํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ฐ™์€ ํ–‰๋™์„ ๋ณธ๋‹ค.

์˜ˆ์ƒ

screenshot 2018-11-06 at 11 29 03 pm

์‹ค์ œ

screenshot 2018-11-06 at 11 27 18 pm

์ง์ ‘ ๋ฐฉ๋ฌธํ•˜๊ฑฐ๋‚˜ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋ฉด CSS๊ฐ€ ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ์†์ƒ๋ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ์†Œ์Šค์— ์žˆ์ง€๋งŒ ์š”์†Œ์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ํŽ˜์ด์ง€๋กœ <Link> ๋ฅผ ๋”ฐ๋ผ ๊ฐ€๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋˜ํ•œ ๋‚˜์—๊ฒŒ ์„ค๋ช… ๋œ๋Œ€๋กœ ์ •ํ™•ํžˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. https://github.com/gatsbyjs/gatsby/pull/8092 ์—์„œ ์ˆ˜์ •์„ ์‹œ๋„ํ–ˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ํŽ˜์ด์ง€์—์„œ ์ž‘๋™ํ–ˆ์ง€๋งŒ ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ์ž‘๋™ํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ :
image

์‹ค์ œ :
image

  System:
    OS: macOS High Sierra 10.13.5
    CPU: x64 Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 10.10.0 - /usr/local/bin/node
    Yarn: 1.9.4 - /usr/local/bin/yarn
    npm: 6.4.1 - /usr/local/bin/npm
  Browsers:
    Chrome: 70.0.3538.102
    Firefox: 62.0.3
    Safari: 11.1.1
  npmPackages:
    gatsby: ^2.0.46 => 2.0.46 
    gatsby-image: ^2.0.20 => 2.0.20 
    gatsby-link: ^2.0.6 => 2.0.6 
    gatsby-plugin-catch-links: ^2.0.8 => 2.0.8 
    gatsby-plugin-flow: 1.0.2 => 1.0.2 
    gatsby-plugin-google-analytics: ^2.0.7 => 2.0.7 
    gatsby-plugin-manifest: ^2.0.9 => 2.0.9 
    gatsby-plugin-react-helmet: ^3.0.1 => 3.0.1 
    gatsby-plugin-root-import: 2.0.4 => 2.0.4 
    gatsby-plugin-sass: ^2.0.4 => 2.0.4 
    gatsby-plugin-sharp: 2.0.12 => 2.0.12 
    gatsby-plugin-sitemap: ^2.0.2 => 2.0.2 
    gatsby-plugin-svgr: 2.0.0-alpha => 2.0.0-alpha 
    gatsby-remark-copy-linked-files: 2.0.6 => 2.0.6 
    gatsby-remark-images: 2.0.6 => 2.0.6 
    gatsby-remark-responsive-iframe: ^2.0.6 => 2.0.6 
    gatsby-remark-smartypants: 2.0.6 => 2.0.6 
    gatsby-source-filesystem: 2.0.8 => 2.0.8 
    gatsby-source-wordpress: 3.0.13 => 3.0.13 
    gatsby-transformer-remark: 2.1.12 => 2.1.12 
    gatsby-transformer-sharp: ^2.1.8 => 2.1.8 

๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๊ฐ€์ง„ index.js ํŒŒ์ผ์—์„œ

import 'injectSheet' from react-jss
import './../bootstrap.min.css'

์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœํ•˜์—ฌ html์—์„œ CSS๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋‚ด ๋งˆ์ง€๋ง‰ ์ฝ”๋“œ๋Š”

import './../bootstrap.min.css'
import 'injectSheet' from react-jss

์†”๋ฃจ์…˜ : ์ˆ˜์ž… ์ˆœ์„œ ๋ณ€๊ฒฝ
์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ๋˜‘๊ฐ™์€ ์ผ์„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค ์ค‘์—์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • develop ๋Š” ๋น„ ๊ฒฐ์ •์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ ์‹คํ–‰๋˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • StaticQuery ๋น„ ๊ฒฐ์ •์ ์œผ๋กœ ์ด๋ฏธ์ง€๋กœ๋“œ๋ฅผ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
  • build ๋Š” ๋น„ ๊ฒฐ์ •์ ์œผ๋กœ ์‹คํŒจํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฏธ์ง€์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • build ์ถœ๋ ฅ ๋‹ค๋ฅด๋‹ค ํฌ๊ฒŒ์™€๋Š” develop -์ด ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ด๋‹ค.
  • develop ์™€ build ๊ฐ€ ์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์•ˆํƒ€๊น๊ฒŒ๋„ Gatsby์˜ ์ด์ ์„ ๋Šฅ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ Create React App์œผ๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ธ๋ผ์ธ ์Šคํƒ€์ผ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ฃจํŠธ ์ˆ˜์ค€์ด ์•„๋‹Œ ์ž์‹ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ .scss๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง ๊ณจ์นซ๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค

์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ gatsby-config.js gatsby-plugin-styled-components ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํšจ๊ณผ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
Gatsby ๋นŒ๋“œ๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ ์šฉํ•˜์ง€๋งŒ React inspector์—์„œ ์ ์ ˆํ•œ ํด๋ž˜์Šค๊ฐ€ ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

System:
    OS: macOS High Sierra 10.13.6
    CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.14.2 - ~/.nvm/versions/node/v10.14.2/bin/node
    Yarn: 1.12.3 - /usr/local/bin/yarn
    npm: 6.4.1 - ~/.nvm/versions/node/v10.14.2/bin/npm
  Browsers:
    Chrome: 71.0.3578.98
    Firefox: 59.0.1
    Safari: 12.0.3
  npmPackages:
    gatsby: ^2.0.107 => 2.0.107
    gatsby-image: ^2.0.20 => 2.0.25
    gatsby-plugin-google-analytics: ^2.0.9 => 2.0.9
    gatsby-plugin-manifest: ^2.0.9 => 2.0.12
    gatsby-plugin-offline: ^2.0.16 => 2.0.19
    gatsby-plugin-react-helmet: ^3.0.2 => 3.0.4
    gatsby-plugin-react-svg: ^2.0.0-beta1 => 2.0.0-beta1
    gatsby-plugin-sass: ^2.0.7 => 2.0.7
    gatsby-plugin-sharp: ^2.0.16 => 2.0.16
    gatsby-remark-copy-linked-files: ^2.0.8 => 2.0.8
    gatsby-remark-external-links: ^0.0.4 => 0.0.4
    gatsby-remark-images: ^3.0.1 => 3.0.1
    gatsby-source-filesystem: ^2.0.12 => 2.0.12
    gatsby-transformer-remark: ^2.1.15 => 2.1.15
    gatsby-transformer-sharp: ^2.1.9 => 2.1.9
  npmGlobalPackages:
    gatsby-cli: 2.4.6

screen shot 2019-02-01 at 8 47 24 am
screen shot 2019-02-01 at 8 47 08 am

ํžˆ์•ผ!

์ด ๋ฌธ์ œ๋Š” ์กฐ์šฉํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ฌด์‹œ ๋ฌด์‹œํ•œ ์กฐ์šฉํ•จ. ๐Ÿ‘ป

๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ˜„์žฌ 30 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ์ง€ 20 ์ผ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ๊ณ„์† ์—ด๋ ค๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋‹ต์žฅ ํ•ด์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์—ด์–ด๋‘๊ธฐ ์œ„ํ•ด "๋ถ€์‹คํ•˜์ง€ ์•Š์Œ"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Gatsby ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ผ์›์ด๋˜์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ’ช๐Ÿ’œ

์—ด์–ด์ฃผ์„ธ์š”.

์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž ์‹œ๋งŒ ์—ด์–ด์ฃผ์„ธ์š”

  System:
    OS: macOS 10.14.3
    CPU: (4) x64 Intel(R) Core(TM) i5-7287U CPU @ 3.30GHz
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 11.10.0 - /usr/local/bin/node
    Yarn: 1.13.0 - /usr/local/bin/yarn
    npm: 6.7.0 - /usr/local/bin/npm
  Browsers:
    Chrome: 72.0.3626.119
    Firefox: 65.0.1
    Safari: 12.0.3
  npmPackages:
    gatsby: ^2.0.35 => 2.1.4 
    gatsby-cli: ^2.4.10 => 2.4.10 
    gatsby-image: ^2.0.19 => 2.0.29 
    gatsby-plugin-emotion: ^4.0.3 => 4.0.3 
    gatsby-plugin-google-analytics: ^2.0.8 => 2.0.14 
    gatsby-plugin-manifest: ^2.0.7 => 2.0.17 
    gatsby-plugin-netlify: ^2.0.3 => 2.0.11 
    gatsby-plugin-netlify-cms: ^3.0.12 => 3.0.12 
    gatsby-plugin-offline: ^2.0.10 => 2.0.23 
    gatsby-plugin-purgecss: ^3.1.0 => 3.1.0 
    gatsby-plugin-react-helmet: ^3.0.1 => 3.0.6 
    gatsby-plugin-sass: ^2.0.7 => 2.0.10 
    gatsby-plugin-sharp: ^2.0.10 => 2.0.20 
    gatsby-plugin-typography: ^2.2.2 => 2.2.7 
    gatsby-remark-copy-linked-files: ^2.0.7 => 2.0.9 
    gatsby-remark-images: ^3.0.1 => 3.0.4 
    gatsby-remark-relative-images: ^0.2.1 => 0.2.1 
    gatsby-source-filesystem: ^2.0.12 => 2.0.20 
    gatsby-transformer-remark: ^2.1.17 => 2.2.5 
    gatsby-transformer-sharp: ^2.1.7 => 2.1.13 
  npmGlobalPackages:
    gatsby-cli: 2.4.5

์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž ์‹œ๋งŒ ์—ด์–ด์ฃผ์„ธ์š”

  System:
    OS: macOS 10.14.3
    CPU: (4) x64 Intel(R) Core(TM) i5-7287U CPU @ 3.30GHz
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 11.10.0 - /usr/local/bin/node
    Yarn: 1.13.0 - /usr/local/bin/yarn
    npm: 6.7.0 - /usr/local/bin/npm
  Browsers:
    Chrome: 72.0.3626.119
    Firefox: 65.0.1
    Safari: 12.0.3
  npmPackages:
    gatsby: ^2.0.35 => 2.1.4 
    gatsby-cli: ^2.4.10 => 2.4.10 
    gatsby-image: ^2.0.19 => 2.0.29 
    gatsby-plugin-emotion: ^4.0.3 => 4.0.3 
    gatsby-plugin-google-analytics: ^2.0.8 => 2.0.14 
    gatsby-plugin-manifest: ^2.0.7 => 2.0.17 
    gatsby-plugin-netlify: ^2.0.3 => 2.0.11 
    gatsby-plugin-netlify-cms: ^3.0.12 => 3.0.12 
    gatsby-plugin-offline: ^2.0.10 => 2.0.23 
    gatsby-plugin-purgecss: ^3.1.0 => 3.1.0 
    gatsby-plugin-react-helmet: ^3.0.1 => 3.0.6 
    gatsby-plugin-sass: ^2.0.7 => 2.0.10 
    gatsby-plugin-sharp: ^2.0.10 => 2.0.20 
    gatsby-plugin-typography: ^2.2.2 => 2.2.7 
    gatsby-remark-copy-linked-files: ^2.0.7 => 2.0.9 
    gatsby-remark-images: ^3.0.1 => 3.0.4 
    gatsby-remark-relative-images: ^0.2.1 => 0.2.1 
    gatsby-source-filesystem: ^2.0.12 => 2.0.20 
    gatsby-transformer-remark: ^2.1.17 => 2.2.5 
    gatsby-transformer-sharp: ^2.1.7 => 2.1.13 
  npmGlobalPackages:
    gatsby-cli: 2.4.5

https://github.com/gatsbyjs/gatsby/issues/11072์— ์–ธ๊ธ‰ ๋œ๋Œ€๋กœ ๋ฌธ์ œ๋Š” 7058a256d2dcfab91259bdf00e811375737414e7์—์„œ ํ•ด๊ฒฐ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋งŒ @emotion/global ๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ „์—ญ ์Šคํƒ€์ผ์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋“  ์ฝ”๋“œ ๋ถ„ํ•  ๋ฌธ์ œ๋Š” @emotion/global ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ๊ณ„์† ์ง€์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ˆ˜์ •

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์™„๋ฒฝํ•œ ์†”๋ฃจ์…˜์€ ์•„๋‹ˆ์ง€๋งŒ์ด ์„ค์ •์—์„œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์ตœ์‹  Gatsby ๋นŒ๋“œ๋กœ ์—…๋ฐ์ดํŠธ ^2.1.8
  2. import { Global, css } from '@emotion/core' ์‚ฌ์šฉ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ณ  CSS ์Šคํƒ€์ผ์„ ์ƒˆ ํŒŒ์ผ๋กœ ์ด๋™ ./styles/global.css
  3. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— gatsby-brower.js ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์— ์Šคํƒ€์ผ ์‹œํŠธ ํฌํ•จ
// gatsby-brower.js

import './src/styles/globals.css'

  1. ์˜ค๋ž˜๋œ ์บ์‹œ ์ •๋ฆฌ ๋ฐ rm -rf .cache && rm -rf public ๋นŒ๋“œ ํด๋”
  2. gatsby build -> gatsby serve
  3. Voilรก ๐Ÿ’โ€โ™‚๏ธ

๋ฉ”๋ชจ

์ด๊ฒƒ์€ ์‹ค๋ง์Šค๋Ÿฌ์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ react-pose ์• ๋‹ˆ๋ฉ”์ด์…˜, ์ฆ‰ gatsby-browser.js ๋ฐ gatsby-ssr.js ์—์„œ ์ˆ˜ํ–‰ ๋œ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์ด์ƒํ•œ ๋ถ€๋‘ ์ž‘์—…, ์ด์ค‘ ๋ Œ๋”๋ง ๋ฐ ํŽ˜์ด์ง€๊ฐ€ ๋‘ ๋ฒˆ์งธ ์ƒˆ๋กœ ๊ณ ์นจ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ผ๋ถ€ ๋น„ ๊ฒฐ์ •์  CSS ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ •ํ™•ํ•œ ๋ฌธ์ œ๋ฅผ ์ง€์  ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ฒฐ๊ตญ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  _solved_ it.

Gatsby๋Š” ๋‹ค๋ฅธ JS ๋„๊ตฌ์™€ ํ•จ๊ป˜ ๋ฉ‹์ง€๊ณ  ํ™”๋ คํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก์ฃผ์˜ํ•˜๊ณ  ์ฑ…์ž„์„ ์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๋ณต์ œ๋ฌผ์„ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? css-in-js๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์ž˜๋ชป์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ๊ณ ์น  ์ˆ˜์—†๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉฐ์น  ์ „์— typography.js ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ typography.js ๊ธฐ๋ฐ˜ ์Šคํƒ€์ผ์ด gatsby develop ์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ gatsby build ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ํ…œํ”Œ๋ฆฟ์—์„œ ์•ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ ํ–ˆ๋Š”๋ฐ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ layout.css

image

๋‚ด ํ•ด๊ฒฐ์ฑ…์€ layout.css ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ณ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

image

typography.js ์ถ”๊ฐ€ ํ›„ ํ”„๋กœ์ ํŠธ
https://github.com/Jasonlhy/Gatsbyjs-Blog/tree/ffb52973c21014b247a808e444319f8eede6eee6

layout.css ์ฃผ์„ ์ฒ˜๋ฆฌ ํ›„ ํ”„๋กœ์ ํŠธ
https://github.com/Jasonlhy/Gatsbyjs-Blog/tree/658c7f8976d8d84a1fd28cb9aa6c99bbce2be9b3

@Jasonlhy ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ •ํ™•ํžˆ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ตฌ์„ฑ ์š”์†Œ ํด๋”์˜ layout.js ํŒŒ์ผ์ด layout.css ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  npm run build ๋ฐ npm run serve ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ์‚ฌ์ดํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค!

์ƒˆ๋กœ์šด ๋ณต์ œ๋ฌผ์„ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? css-in-js๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์ž˜๋ชป์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ๊ณ ์น  ์ˆ˜์—†๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @wardpeet , ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ gatsby-plugin-styled-components๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐฉ๊ธˆ ๋‚˜ํƒ€ ๋‚ฌ์œผ๋ฏ€๋กœ ์—…๋ฐ์ดํŠธ ๋œ Gatsby์—์„œ ๊ณ„์† ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์˜ ์ƒˆ๋กœ์šด ์žฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ๋‚ด ์Šคํƒ€์ผ์„ ํŽธ์ง‘ ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ๋ณต์ œํ’ˆ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ปค๋ฐ‹์„ ๋ฐฐํฌ ํ•œ ํ›„ ๊ฐ€์ ธ ์˜ค๊ธฐ ์ˆœ์„œ๊ฐ€ ๋‹ค์‹œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด CSS๋Š” ์ด์ œ dev์™€ prod์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฒจ๋ถ€ ๋œ ์Šคํฌ๋ฆฐ ์ƒท๊ณผ ์„ค๋ช…์€ ์ด์ „์— ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ธฐ์ˆ 

๊ฐœ์ธ ๋น„๋Š” ๊ฐœ๋ฐœ๊ณผ ์ƒ์‚ฐ์—์„œ <head> ๋‹ค๋ฅด๊ฒŒ ์ฃผ๋ฌธํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ CSS์™€ ํ•จ๊ป˜ gatsby-plugin-styled-components๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด๋กœ ์ธํ•ด dev์™€ prod๊ฐ„์— CSS๋กœ๋“œ ์ˆœ์„œ๊ฐ€ ๋‹ฌ๋ผ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์‹œ๊ฐ์  ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ # 9733์— ์ฐฌ์„ฑํ•˜์—ฌ ์—ฌ๋Ÿฌ ์œ ์‚ฌํ•œ ๋ฌธ์ œ์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ ๋œ # 9908๊ณผ ๋™์ผํ•˜๋ฉฐ, @KyleAMathews ์— ๋”ฐ๋ผ # 11800์—์„œ ์ˆ˜์ • ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Gatsby๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„์—๋„ # 9908์˜ ๋™์ž‘์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„

์ด repo : https://github.com/vivshaw/vivshaw์˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‹ค์ œ (ํ•˜์ง€๋งŒ ์ตœ์†Œํ•œ์˜) ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์ดํŠธ์—๋Š” Bulma CSS ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ํฌํ•จํ•œ ์ „์—ญ CSS ๋ฉ์–ด๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋‚˜๋จธ์ง€ ์‚ฌ์ดํŠธ๋Š” ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ๋ฒ„์ „์€ netlify์— ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ ๊ฒฐ๊ณผ

gatsby develop ๋ฐ gatsby build gatsby serve ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ํ‘œ์‹œ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ€์ผ๋กœ๋“œ ์ˆœ์„œ๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ

ํ”„๋กœ๋•์…˜ ์šฉ์œผ๋กœ ๋นŒ๋“œ๋˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ํŽ˜์ด์ง€ ์Šคํƒ€์ผ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

screenshot-prod

๊ทธ๋Ÿฌ๋‚˜ gatsby develop ๋กœ๋“œํ•˜๋ฉด ์ธํŠธ๋กœ ์„น์…˜์˜ ํŒจ๋”ฉ์ด AWOL์ด๋ฉ๋‹ˆ๋‹ค.

screenshot-dev

๋‚˜๋Š” ์•ฝ๊ฐ„์„ ํŒŒ๊ณ  ๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„ ๋ƒˆ๋‹ค. ํ”„๋กœ๋•์…˜์—์„œ Gatsby๋Š” ์—ฌ๊ธฐ์— ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ๋‘ ์ค„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ ์Šคํƒ€์ผ ์ด์ „์— ์ „์—ญ CSS ์ฒญํฌ๋ฅผ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

production-source

๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ์—์„œ๋Š” ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ ์Šคํƒ€์ผ์ด ๋จผ์ €๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

dev-source

์ด๋กœ ์ธํ•ด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ธ€์Ž„, ๋‚˜๋Š” Bulma ํด๋ž˜์Šค์™€ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ ์ƒ์„ฑ ํด๋ž˜์Šค๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ํด๋ž˜์Šค ๋ชจ๋‘ ํŒจ๋”ฉ ์†์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ ๋งˆ์ง€๋ง‰์œผ๋กœ๋กœ๋“œ๋˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์ ์šฉ๋˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Bulma ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ๋งŒํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜์ด๋กœ๋“œ ์ˆœ์„œ ๋™์ž‘์œผ๋กœ ์ธํ•ด ๋” ๋ณต์žกํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ

> gatsby info

  System:
    OS: Windows 10
    CPU: (4) x64 Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
  Binaries:
    Yarn: yarn install v0.27.5
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 118.04s. - ~\AppData\Roaming\npm\yarn.CMD
    npm: 6.4.0 - C:\Program Files\nodejs\npm.CMD
  Languages:
    Python: 2.7.13 - /c/Python27/python
  Browsers:
    Edge: 42.17134.1.0
  npmPackages:
    gatsby: ^2.3.16 => 2.3.16
    gatsby-image: ^2.0.37 => 2.0.37
    gatsby-plugin-eslint: ^2.0.4 => 2.0.4
    gatsby-plugin-layout: ^1.0.14 => 1.0.14
    gatsby-plugin-manifest: ^2.0.28 => 2.0.28
    gatsby-plugin-netlify: ^2.0.13 => 2.0.13
    gatsby-plugin-netlify-cms: ^3.0.17 => 3.0.17
    gatsby-plugin-offline: ^2.0.25 => 2.0.25
    gatsby-plugin-purgecss: ^3.1.1 => 3.1.1
    gatsby-plugin-react-helmet: ^3.0.12 => 3.0.12
    gatsby-plugin-robots-txt: ^1.4.0 => 1.4.0
    gatsby-plugin-sass: ^2.0.11 => 2.0.11
    gatsby-plugin-sharp: ^2.0.32 => 2.0.32
    gatsby-plugin-sitemap: ^2.0.12 => 2.0.12
    gatsby-plugin-styled-components: ^3.0.7 => 3.0.7
    gatsby-plugin-webpack-size: 0.0.3 => 0.0.3
    gatsby-source-filesystem: ^2.0.29 => 2.0.29
    gatsby-transformer-remark: ^2.3.8 => 2.3.8
    gatsby-transformer-sharp: ^2.1.17 => 2.1.17

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ—ค๋“œ ๊ตฌ์„ฑ ์š”์†Œ์— ์ผ์ข…์˜ ์ •๋ ฌ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@topherauyeung์ด ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋จ

ํ™˜๊ฒฝ

gatsby info

  System:
    OS: macOS High Sierra 10.13.4
    CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.7.0 - /usr/local/bin/node
    Yarn: 1.15.2 - ~/.yarn/bin/yarn
    npm: 6.4.1 - /usr/local/bin/npm
  Languages:
    Python: 2.7.10 - /usr/bin/python
  Browsers:
    Chrome: 73.0.3683.103
    Firefox: 66.0.2
    Safari: 11.1
  npmPackages:
    gatsby: ^2.3.24 => 2.3.27
    gatsby-image: ^2.0.39 => 2.0.40
    gatsby-plugin-manifest: ^2.0.29 => 2.0.29
    gatsby-plugin-material-ui: ^1.2.4 => 1.2.4
    gatsby-plugin-offline: ^2.0.25 => 2.0.25
    gatsby-plugin-react-helmet: ^3.0.12 => 3.0.12
    gatsby-plugin-sharp: ^2.0.35 => 2.0.35
    gatsby-plugin-typography: ^2.2.13 => 2.2.13
    gatsby-source-filesystem: ^2.0.29 => 2.0.31
    gatsby-transformer-sharp: ^2.1.18 => 2.1.18
  npmGlobalPackages:
    gatsby-cli: 2.5.4

์ด ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. NPM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” gatsby repo๊ฐ€ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋นŒ๋“œ์‹œ ์ž˜๋ชป๋œ ์ˆœ์„œ๋กœ <head> ์— ์‚ฝ์ž…๋˜๋Š” .scss ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์‹œ ๊ฐœ์ธ ๋น„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์Šคํƒ€์ผ์ด ๋งˆ์ง€๋ง‰์— ๋‚˜์˜ค๋ฏ€๋กœ ์šฐ์„ ๊ถŒ์„ ๊ฐ€์ง€์ง€ ๋งŒ ๋นŒ๋“œ์‹œ์—๋Š” ๋จผ์ € ๊ฐ€์ ธ ์™€์„œ ๊ฐ€์ ธ์˜จ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์Šคํƒ€์ผ๋กœ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ์„ ๋‹ค์ด๋‚ด๋ฏนํ•˜๊ฒŒ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

componentDidMount() { require("./source.less") }

์ด ๋ฌธ์ œ๋„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ ๊ฒฝ์šฐ๋Š” ๋‹จ์ˆœํ•œ ์‹ค์ˆ˜์˜€์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค

<Button href="/path/to/page">blah blah</Button>

Gatsby Link๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

<Link to="/path/to/page">
  <Button>blah blah</Button>
</Link>

๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…์„ ์‹œ๋„ํ•˜๋Š” ๋™์•ˆ ์†”๋ฃจ์…˜์„ ์ฃผ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์ตœ๊ทผ์—๋งŒ ๋ฌธ์ œ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” Typography.js์™€ Bootstrap์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜์—์„œ ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” typography.js์— ์˜ํ•ด ๋ฌด์‹œ๋˜์ง€๋งŒ dev ์„œ๋ฒ„์—์„œ๋Š” Bootstrap ๊ธ€๊ผด ์Šคํƒ€์ผ์ด ๋‚ด ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ์Šคํƒ€์ผ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋งค์šฐ ํ™”๊ฐ€๋‚ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ๋‚ด๊ฐ€ gatsby์—์„œ typography.js๋กœ ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์„ ์–ด๋–ป๊ฒŒ ๋ฎ์–ด ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์ตœ๊ทผ์—๋งŒ ๋ฌธ์ œ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” Typography.js์™€ Bootstrap์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜์—์„œ ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” typography.js์— ์˜ํ•ด ๋ฌด์‹œ๋˜์ง€๋งŒ dev ์„œ๋ฒ„์—์„œ๋Š” Bootstrap ๊ธ€๊ผด ์Šคํƒ€์ผ์ด ๋‚ด ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ์Šคํƒ€์ผ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋งค์šฐ ํ™”๊ฐ€๋‚ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ๋‚ด๊ฐ€ gatsby์—์„œ typography.js๋กœ ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์„ ์–ด๋–ป๊ฒŒ ๋ฎ์–ด ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ-https: //github.com/gatsbyjs/gatsby/issues/16075

์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. CSS ํ”„๋ ˆ์ž„ ์›Œํฌ (๋ชจ๋“  ์‚ฌ์šฉ์ž ์ง€์ • .sass)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ๋ถ€ ์Šคํƒ€์ผ, ์š”์†Œ ๋ฐ ํด๋ž˜์Šค๋Š” gatsby develop ๋ฐ gatsby build ๊ฐ„์— ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ URLSearchParams(window.location.search) ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๋Š” ํŽ˜์ด์ง€์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์š”์†Œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. develop ์˜ URL๋กœ ์ง์ ‘ ์ด๋™ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. build ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์†Œ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ ( develop ) :
image

์‹ค์ œ ( build ) :
image

์กฐ๊ฑด๋ถ€ ๋…ผ๋ฆฌ :

{(!!params ? !params.has('signup') : true) && (
    <div className={[ styles.form__element, styles.contact__message, ].join( ' ')}>
        <label htmlFor="message">
            Message
            <textarea required minLength="10" name="message" id="message" cols="30" rows="10" className={styles.form__control} placeholder="Questions, comments, etc..." />
        </label>
    </div>
)}

params ์„ค์ • :

const params = typeof window !== `undefined` ? new URLSearchParams(window.location.search) : ''
System:
    OS: macOS 10.14.6
    CPU: (8) x64 Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.15.3 - /usr/local/bin/node
    npm: 6.10.2 - /usr/local/bin/npm
  Languages:
    Python: 2.7.10 - /usr/bin/python
  Browsers:
    Chrome: 76.0.3809.100
    Safari: 12.1.2
  npmPackages:
    gatsby: ^2.13.50 => 2.13.50
    gatsby-image: ^2.2.8 => 2.2.8
    gatsby-plugin-google-analytics: ^2.1.6 => 2.1.6
    gatsby-plugin-hotjar: ^1.0.1 => 1.0.1
    gatsby-plugin-manifest: ^2.2.4 => 2.2.4
    gatsby-plugin-offline: ^2.2.4 => 2.2.4
    gatsby-plugin-react-helmet: ^3.1.3 => 3.1.3
    gatsby-plugin-sass: ^2.1.4 => 2.1.4
    gatsby-plugin-sharp: ^2.2.9 => 2.2.9
    gatsby-plugin-sitemap: ^2.2.5 => 2.2.5
    gatsby-remark-external-links: 0.0.4 => 0.0.4
    gatsby-source-contentful: ^2.1.17 => 2.1.17
    gatsby-source-filesystem: ^2.1.8 => 2.1.8
    gatsby-transformer-remark: ^2.6.10 => 2.6.10
    gatsby-transformer-sharp: ^2.2.5 => 2.2.5
  npmGlobalPackages:
    gatsby-cli: 2.7.27

@ j-651 ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์กฐ๊ฑด๋ถ€๋กœ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๋ Œ๋”๋งํ•˜๋ฉด ์ž˜๋ชป๋œ ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@OrKoN ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ํ•œ ์ผ์€ ์›๋ณธ ์กฐ๊ฐ์„ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์œ„ํ•ด ์†Œํ’ˆ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ตฌํ˜„์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” gatsby-plugin-styled-components ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ–ˆ๊ณ  ๊ทธ๊ฒƒ๋“ค์€ ์Šค์Šค๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ MaterialUI๊ฐ€ ์ค‘๋‹จ๋˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ gatsby-plugin-material-ui ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค. ์žฌ๋ฃŒ UI๋Š” ๋ฐฐํฌ์‹œ ์—ฌ์ „ํžˆ ์†์ƒ๋ฉ๋‹ˆ๋‹ค.

์ƒ์‚ฐ:
image

Dev (๋กœ์ปฌ)
image

๋‚ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ณ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ https://github.com/gatsbyjs/gatsby/issues/16925 ์—์„œ ๋ถ„๋ฆฌ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งํฌ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋™์ž‘๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๋ฌธ์ œ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ ์ ˆํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ๊ฐ€์•ผํ•˜๋Š” ๋น ๋ฅธ ์ˆ˜์ •์œผ๋กœ ์ฐจ์ž„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

typography.js์˜ ์ถœ๋ ฅ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ณ  .scss ํŒŒ์ผ์— ๋„ฃ์€ ๋‹ค์Œ ๋‚˜์ค‘์— ์•ฝ๊ฐ„์˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๋‹ค.

typographyjs-output.scss
์ด ํŒŒ์ผ์„ ๋ฌด์‹œํ•˜๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
typography.js์—์„œ ์ƒ์„ฑ ๋œ CSS๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์—ฌ๊ธฐ์— ๋ฐฐ์น˜ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
์™œ? ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค : https://github.com/gatsbyjs/gatsby/issues/8560
ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋Š” dev์™€ ๋‹ค๋ฅธ ์ˆœ์„œ๋กœ SCSS ๋ฐ css-in-js๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค (ํ•ญ์ƒ ์ผ๊ด€๋œ ์ˆœ์„œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).
'gatsby-plugin-typography'๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ผ๋ฐ˜ ol '์Šคํƒ€์ผ ์‹œํŠธ์ฒ˜๋Ÿผ ์ƒ์„ฑ ๋œ CSS๋ฅผ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๋‹ค.
Typography.js๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ํ”„๋กœ์ ํŠธ์— ํฌํ•จ๋˜์—ˆ์œผ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ-์ด ๊ธฐ๋ณธ๊ฐ’์ด ํฌํ•จ ๋œ ๋‚˜๋จธ์ง€ ์‚ฌ์ดํŠธ์˜ ์Šคํƒ€์ผ์„ ์ง€์ • ํ–ˆ์œผ๋ฏ€๋กœ์ด ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋ฉด ์ƒํ™ฉ์ด ์ข€ ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๊ฝค ๋”์ฐํ•œ ํ•ด๊ฒฐ์ฑ…์ด์ง€๋งŒ ๋‹น์‹ ์ด ๋ฌถ์—ฌ ์žˆ๋‹ค๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ๊นจ๋‹ฌ์€ ๊ฒƒ์€ ์ดˆ๊ธฐ ํŽ˜์ด์ง€๋กœ๋“œ์‹œ CSS๊ฐ€ ๊นจ์กŒ์ง€๋งŒ ํŽ˜์ด์ง€๋ฅผ ๋ณ€๊ฒฝ ํ•œ ๋‹ค์Œ ๋‹ค์‹œ ํ™ˆ ํŽ˜์ด์ง€๋กœ ๋Œ์•„ ๊ฐ€๋ฉด CSS๊ฐ€ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CSS๊ฐ€ ์ œ๋Œ€๋กœ ๋ณด์ด์ง€ ์•Š๊ณ  ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์€ ์ดˆ๊ธฐ ํŽ˜์ด์ง€๋กœ๋“œ์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Material-UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gatsby.config.js์—์„œ gatsby-plugin-material-ui๋ฅผ ๋‘ ๋ฒˆ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ํŽ˜์ด์ง€๋กœ๋“œ์— ๊นœ๋ฐ•์ž„์ด ์žˆ์—ˆ๊ณ  ์ผ๋ถ€ ์Šคํƒ€์ผ์ด ๊ฐ€๋” ์ถ”๊ฐ€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ตœ์‹  ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋ฉฐ์ด ๋ชจ๋“ˆ์€ gatsby.config.js์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐฐ์—ด์—์„œ ๋‚ด ๋ณด๋ƒ…๋‹ˆ๋‹ค.
, { resolve: 'gatsby-plugin-material-ui', // If you want to use styled components you should change the injection order. options: { // stylesProvider: { // injectFirst: true, // }, }, }

์—ฌ๊ธฐ์—์„œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋กœ์ปฌ์€ ๊ดœ์ฐฎ์ง€ ๋งŒ ํ”„๋กœ๋•์…˜ (์ฒซ ํŽ˜์ด์ง€๋ณด๊ธฐ)์—์„œ ์ž˜๋ชป๋œ ์Šคํƒ€์ผ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ : ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ํ”„๋กœ๋•์…˜์‹œ jss13 ๋ฐ jss14๊ฐ€ ์žˆ์ง€๋งŒ ํ•ด๋‹น ํด๋ž˜์Šค๋Š” jss43 ๋ฐ jss45 ์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๋จธ๋ฆฌ์˜ ์Šคํƒ€์ผ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„๋ณด๊ณ  ์žˆ์ง€๋งŒ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๊ด€ํ•ด์„œ๋Š” ์žƒ์–ด ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค ... ๋‘ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค.

plugins: [
    'gatsby-plugin-styled-components',
    'gatsby-plugin-material-ui',
];

@ocundale ์ €์—๊ฒŒ ์ˆ˜์ •์€ material-ui ์Šคํƒ€์ผ๋ง ๋ฐฉ๋ฒ•์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฝ”๋“œ๋Š” ํ”„๋กœ๋•์…˜์œผ๋กœ ํ‘ธ์‹œ ํ•  ๋•Œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ผ๋‹จ ์ด๊ฒƒ์„ ์ œ๊ฑฐํ•˜๊ณ ์ด ์Šคํƒ€์ผ์„ ์ธ๋ผ์ธ CSS๋กœ ๋„ฃ์œผ๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์˜๋„ ํ•œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

const MyTab = styled(Tab)({
  border: '1px solid grey',
  borderRadius: '50px',
  fontSize: '12px',
  marginRight: '16px'
})

์ˆ˜ํ–‰ํ•˜์—ฌ ์ˆ˜์ •

<Tab style={{
 border: '1px solid grey',
  borderRadius: '50px',
  fontSize: '12px',
  marginRight: '16px'
}}>
...
</Tab>

์ข‹์•„, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @ Skillz4Killz , ๋น ๋ฅธ ์‘๋‹ต์— ๊ฐ์‚ฌ ๋“œ๋ฆฌ๋ฉฐ, ๋ถ€๋„๋Ÿฌ์šด ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ทธ๋•Œ๋Š” ๋™์ผํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฑด๋ฐฐ!

์ด๊ฒƒ์€ ์ ์ ˆํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ๊ฐ€์•ผํ•˜๋Š” ๋น ๋ฅธ ์ˆ˜์ •์œผ๋กœ ์ฐจ์ž„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ž„์‹œ ์ˆ˜์ •์€ ๋‚ด CSS์˜ ๋ชจ๋“  ์ค„์— !important ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ CSS์— ์˜ํ•ด ์žฌ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž”์ธํ•˜๋‹ค.

@ gatsbyjs / core์ด ๋ฌธ์ œ๋Š”์ด ์ €์žฅ์†Œ ์ „์ฒด์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‹ค๋ฅธ ๋ณ€ํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. # 3741 # 5100 # 9911 # 10370 # 12360 # 14601 # 17676 # 17728 (๋” ๋งŽ์€ ๊ฒƒ์ด์žˆ์„ ๊ฑฐ๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ช…ํ™•ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์—†๊ณ  ์‚ฌ์ดํŠธ์— ๋น„ ๊ฒฐ์ •์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ๋งค์šฐ ๊ฐ„์ ‘์  ์ธ ๋ถ€์ž‘์šฉ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…์ข… "์‹ ๋น„ํ•œ ๋ฐฉ์‹"์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ HTML ์š”์†Œ (ํŠนํžˆ class ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ _ ๋งค์šฐ _ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

# 14601์—์„œ ๋งํ•œ ๋‚ด์šฉ์ด ๋งž๋‹ค๋ฉด React 16์— ๋„์ž… ๋œ ์ˆ˜ํ™” ๊ธฐ๋Šฅ ํ†ตํ•ฉ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ์ด ๋ฌธ์ œ๋ฅผ ๋” ์ผ์ฐ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜๋Š” # 10706์ด ์žˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ ์ˆ˜์ •ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ธ๋ผ์ธ CSS / ์ค‘์š”ํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ณ„ํš๋œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์•„๋‹ˆ๊ณ  ์‹ค์ œ๋กœ ์šด์ด ์ข‹์•˜์ง€ ๋งŒ Material-UI๋ฅผ ๋ฒ„์ „> 4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ๊ณผ ํ•จ๊ป˜ _gatsby-plugin-material-ui_ ๋ฐ _gatsby-plugin-styled-components_ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

{
  resolve: 'gatsby-plugin-material-ui',
  options: {
    stylesProvider: {
      injectFirst: true,
    },
  },
},
'gatsby-plugin-styled-components',
"@material-ui/core": "^4.0.0",
"@material-ui/icons": "^4.0.0",
"@material-ui/styles": "^4.4.1",

๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ €์žฅ์†Œ์—์„œ ์ฒ˜์Œ ์— ๊ธฐ๋ณธ ์Šคํƒ€ํ„ฐ ์—์„œ ๋ณต์ œ ๋œ ์ƒˆ gatsby ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค : https://github.com/eyalroth/gatsby-hydrate-bug

์ข…์†์„ฑ / ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

$ gatsby info
  System:
    OS: Linux 4.4 Ubuntu 16.04.6 LTS (Xenial Xerus)
    CPU: (4) x64 Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
    Shell: 4.3.48 - /bin/bash
  Binaries:
    Node: 10.16.0 - ~/n/bin/node
    Yarn: 1.17.3 - /usr/bin/yarn
    npm: 6.11.3 - ~/n/bin/npm
  Languages:
    Python: 2.7.12 - /usr/bin/python
  npmPackages:
    gatsby: ^2.15.22 => 2.15.22
    gatsby-plugin-offline: ^3.0.8 => 3.0.8
  npmGlobalPackages:
    gatsby-cli: 2.7.44

์‚ฌ์ดํŠธ์—๋Š” 2 ํŽ˜์ด์ง€์™€ ๋ ˆ์ด์•„์›ƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ์€ wrapPageElement ๋ฅผ ํ†ตํ•ด 2 ํŽ˜์ด์ง€์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค ( gatsby-plugin-layout ์—์„œ์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ์ฝ”๋“œ). ๋ ˆ์ด์•„์›ƒ์€ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •๋œ class ์†์„ฑ์ด์žˆ๋Š” div ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ๋ฅผ ๋ž˜ํ•‘ํ•˜๋Š” ๋™์‹œ์— ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ  ์•„๋ž˜์— ํ…์ŠคํŠธ๋กœ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ• (๋ฐ ์ œ๊ณต)ํ•˜๊ณ  ์ƒ‰์ธ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ๊ฒ€์‚ฌํ•˜๋ฉด ํŽ˜์ด์ง€์— ํ‘œ์‹œ๋œ ์‹œ๊ฐ„์ด div class ์™€ ๋™์ผํ•˜์ง€ ์•Š์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ:
gatsby-hydrate-bug1

๋‘ ๋ฒˆ์งธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด์ด ๋™์ž‘์ด ์ˆ˜์ •๋˜๊ณ  ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ์™€ class ์†์„ฑ ์‚ฌ์ด์˜ ์‹œ๊ฐ„์ด ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
gatsby-hydrate-bug2

๋™์ผํ•œ ์ฐฝ์—์„œ ํŽ˜์ด์ง€ ์‚ฌ์ด๋ฅผ ๊ณ„์† ํƒ์ƒ‰ํ•˜๋Š” ํ•œ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๊ฑฐ๋‚˜ ์ฐฝ์—์„œ ์—ด๋ฉด ๋ถˆ์ผ์น˜๊ฐ€ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ class ์†์„ฑ์˜ ์‹œ๊ฐ„์€ ์ƒˆ๋กœ ๊ณ ์นจ ํ•  ๋•Œ๋งˆ๋‹ค ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค (์บ์‹œ๋จ์„ ์•”์‹œ). "๊ฐ•์ œ ์ƒˆ๋กœ ๊ณ ์นจ"(CTRL + F5)์€ ํŽ˜์ด์ง€๋ฅผ ์ œ๋Œ€๋กœ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ํŠน์ • ์ธ์Šคํ„ด์Šค๋Š” gatsby-plugin-offline ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐœ์ƒํ•˜๋ฉฐ gatsby-plugin-layout ๋ฐ wrapPageElement ์˜ ๋‹ค๋ฅธ ๊ตฌํ˜„์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„์ค๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ƒ๊ฐ ํ•ด๋‚ธ ์œ ์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์€ hydrate ํ•จ์ˆ˜๋ฅผ render๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค .

// gatsby-browser.js
const ReactDOM = require('react-dom')

export function replaceHydrateFunction() {
    return (element, container, callback) => {
        ReactDOM.render(element, container, callback)
    }
}

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๊ฒƒ์€ https://github.com/facebook/react/issues/10591 , https://github.com/ ๊ณผ ๊ฐ™์€ React ์ €์žฅ์†Œ์˜ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์—์„œ ๋…ผ์˜ ๋œ ๋ฐ”์™€ ๊ฐ™์ด ์ˆ˜ํ™”๋ฌผ ๋ฐฉ๋ฒ•์˜ ์กฐ์ • ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. facebook / react / issues / 12713 , https://github.com/facebook/react/issues/13260.

"์ˆ˜ํ™”"์˜ ์ „์ฒด ๋ชฉ์ ์€ ์ผ๋ฐ˜ ๋ Œ๋”๋ง๋ณด๋‹ค ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด https://github.com/gatsbyjs/gatsby/issues/17914 ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

@eyalroth ์ €๋Š” ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. https://github.com/gatsbyjs/gatsby/issues/17914 ์—์„œ ์ด์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์ด๊ฒƒ์˜ ํ•˜๋‹จ์— ๋„๋‹ฌํ•ฉ์‹œ๋‹ค

๋‚˜๋Š” ๋˜ํ•œ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Gatsby ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๊ดœ์ฐฎ ์•˜์ง€๋งŒ ๋ฌธ์ œ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œ ํ•  ๋•Œ ๋นŒ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. className ๋ฐ ์‹ฌ์ง€์–ด ์ธ๋ผ์ธ ์Šคํƒ€์ผ์ด ํŠน์ • ํƒœ๊ทธ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ์ด์—†๋Š” div๊ฐ€ ๋‚จ์•˜์ง€ ๋งŒ ๋ชจ๋“  ์–ด๋ฆฐ์ด๊ฐ€ ๋ Œ๋”๋ง๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ „์ฒด ํŽ˜์ด์ง€ ์ƒˆ๋กœ ๊ณ ์นจ์ด ์•„๋‹Œ ๊ฐœ์ธ ๋น„ ๋งํฌ ๋ผ์šฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ๋ฏธ์น˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. ๋‚˜๋Š” ๋”์ฐํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์ง€๋งŒ ์•„๋งˆ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ (div) ํƒœ๊ทธ๋ฅผ (article)๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ‘์ž๊ธฐ

<div>

๋˜์—ˆ๋‹ค

<article class="CartSummary-module--summary--3zJVn">

๋นŒ๋“œ์‹œ

๊ทธ๊ฒƒ์€ ๋˜ํ•œ ul ๋ฐ pre์™€ ํ•จ๊ป˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

@ stefantrinh1 ๋ฏธ์นœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค- ์ €๋„์ด ๋ฏธ์นœ CSS ๋™์ž‘์„ ๊ฒฝํ—˜ํ•˜๊ณ 

๋ˆ„๊ตฐ๊ฐ€ ๋ณต์ œ ๋œ ๊ฒƒ์„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๊ณต๊ฐœ ์ €์žฅ์†Œ๊ฐ€ ์žˆ๊ณ  ๋‘ ๋ฒ„์ „์„ ๋ชจ๋‘ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@ stefantrinh1 ์˜ article ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/funkfinger/blog/tree/good
https://good.jaywiggins.com

์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค
https://github.com/funkfinger/blog/tree/bad
https://bad.jaywiggins.com

์กฐ๊ฑด๋ถ€๋กœ ์ฟ ํ‚ค ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ ํ”„๋กœ๋•์…˜์— SSR์ด ์žˆ์œผ๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (์™œ ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ). ์–ด์จŒ๋“ , ๋‚ด๊ฐ€ ํ•œ ์ผ์€ useEffect ์•ˆ์— ์ˆ˜ํ‘œ๋ฅผ ๋ž˜ํ•‘ํ•˜๊ณ  React๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์ˆ˜ (์žฌ์ˆ˜ ํ™”)ํ•˜๋ฉด ๋ Œ๋”๋ง ํ•  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๊ตฌ์„ฑ ์š”์†Œ์— componentDidMount() ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋ฌธ์ œ๋Š” gatsby-browser.js ์—์„œ๋Š” wrapPageElement ๋ฐ wrapRootElement ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ gatsby-ssr.js ์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฒƒ์„ gatsby-ssr.js ๋ณต์‚ฌํ•˜์ž ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. @jlkiri ์˜ ์‘๋‹ต์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค : https://github.com/gatsbyjs/gatsby/issues/22113#issuecomment -597432337

2020 ๋…„ ๊ฐ™์€ ํ˜ธ. ํด๋ฆญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€๋งŒ ์ „์ฒด ์žฌ ์žฅ์ „ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
"gatsby": "^ 2.19.45",
"react-custom-scrollbars": "^ 4.2.1",

๋‚˜๋Š” emailnikola์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ๋‹ค

25729

์ œ ๊ฒฝ์šฐ์—๋Š” gatsby-plugin-minify ์ด์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผœ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๊ฐ€ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ์˜ ๋ชจ๋“  ์Šคํƒ€์ผ์„ ๋‹ค์‹œ๋กœ๋“œํ•˜๋„๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

KyleAMathews picture KyleAMathews  ยท  3์ฝ”๋ฉ˜ํŠธ

jimfilippou picture jimfilippou  ยท  3์ฝ”๋ฉ˜ํŠธ

3CordGuy picture 3CordGuy  ยท  3์ฝ”๋ฉ˜ํŠธ

kalinchernev picture kalinchernev  ยท  3์ฝ”๋ฉ˜ํŠธ

theduke picture theduke  ยท  3์ฝ”๋ฉ˜ํŠธ