Gatsby: [gatsby-source-wordpress] ๋งค์šฐ ๋Š๋ฆฐ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์œ ๋ฐœํ•˜๋Š” ๋Œ€ํ˜• WordPress ์‚ฌ์ดํŠธ('์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ'์—์„œ ๋ฉˆ์ถค)

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

์„ค๋ช…

gatsby develop ๋Š” ๋Œ€๊ทœ๋ชจ WordPress ์„ค์น˜(~9000๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ, ~35ํŽ˜์ด์ง€)๋ฅผ ์ฟผ๋ฆฌํ•œ ํ›„ source and transform nodes ์—์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

์ด์™€ ๊ด€๋ จํ•˜์—ฌ Gatsby๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ๋„ˆ๋ฌด ํฐ ๊ฒƒ์— ๋Œ€ํ•œ ์ง€์นจ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ™˜๊ฒฝ

  System:
    OS: macOS High Sierra 10.13.6
    CPU: x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 8.10.0 - ~/n/bin/node
    Yarn: 1.5.1 - ~/n/bin/yarn
    npm: 5.6.0 - ~/n/bin/npm
  Browsers:
    Chrome: 67.0.3396.99
    Safari: 11.1.2
  npmPackages:
    gatsby: ^1.9.273 => 1.9.273
    gatsby-image: ^1.0.54 => 1.0.54
    gatsby-link: ^1.6.45 => 1.6.45
    gatsby-plugin-google-analytics: ^1.0.27 => 1.0.31
    gatsby-plugin-postcss-sass: ^1.0.22 => 1.0.22
    gatsby-plugin-react-helmet: ^2.0.10 => 2.0.11
    gatsby-plugin-react-next: ^1.0.11 => 1.0.11
    gatsby-plugin-resolve-src: 1.1.3 => 1.1.3
    gatsby-plugin-sharp: ^1.6.48 => 1.6.48
    gatsby-plugin-svgr: ^1.0.1 => 1.0.1
    gatsby-source-filesystem: ^1.5.39 => 1.5.39
    gatsby-source-wordpress: ^2.0.93 => 2.0.93
    gatsby-transformer-sharp: ^1.6.27 => 1.6.27
  npmGlobalPackages:
    gatsby-cli: 1.1.58

ํŽธ์ง‘ : ๊ทธ๋ƒฅ์ด ๋ฐ˜๋ณต-์ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค ์›ํ•˜๋Š” ์‚ญ์ œ .cache/ , .node_modules , ๊ทธ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๋“ฑ.

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

์—ฌ๋Ÿฌ๋ถ„, createRemoteFileNode ์š”์ฒญ์„ ๋ณ‘๋ ฌ ๋Œ€์‹  ์ง๋ ฌ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ createRemoteFileNode ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ WP ์„œ๋ฒ„์— ๋„ˆ๋ฌด ๋งŽ์€ 200์˜ ๋™์‹œ์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. CloudFront์— ๋‚ด ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๊ณ  ๊ฑฐ๊ธฐ์—์„œ ์ผ๋ถ€ ์†๋„ ์ œํ•œ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ž ์‹œ ๋™์•ˆ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ถ„๊ธฐ ๋ฒ„์ „์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ gatsby-source-wordpress ์žˆ์ง€ ์•Š๊ณ  gatsby-source-filesystem ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ createRemoteFileNode ํ•จ์ˆ˜์˜ ์†Œ๋น„์ž๋Š” ๊ฑฐ๊ธฐ์—์„œ ๋™์‹œ์„ฑ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ตฌ์„ฑ์—์„œ ๋™์‹œ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด PR์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

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

#!/usr/bin/env node
const path = require('path');
const shell = require('shelljs');

const FILE_PATH = path.resolve(
  __dirname,
  // add path to your root dir here,
  'node_modules',
  'gatsby-source-filesystem/create-remote-file-node.js'
);

shell.sed('-i', 'concurrent: 200', 'concurrent: 20', FILE_PATH);

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

์žฌ์ƒ์‚ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฒŒ์‹œ๋ฌผ ์ˆ˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ ์–ด๋„ ์ด ๋‹จ๊ณ„์—์„œ๋Š”) - v1์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ์ดํ›„ ๋นŒ๋“œ ๋‹จ๊ณ„์— ์žˆ์œผ๋ฉฐ ์ค‘๋‹จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

Local by Flywheel ์˜ ๋ฌธ์ œ์ธ์ง€, MAMP Pro ๋ฅผ ํ†ตํ•ด WordPress๋ฅผ ์ œ๊ณตํ•  ๋•Œ ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์•„์ง ํฌ์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜์ง€๋„ ์•Š์•˜๊ณ (ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์ถ• ์ค‘), ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋‹จ๊ณ„์˜ ์‹คํ–‰ ์‹œ๊ฐ„์€ 636.41์ดˆ(11๋ถ„ ๋‚จ์ง“)์ž…๋‹ˆ๋‹ค.

const path = require('path')

exports.createPages = ({ boundActionCreators, graphql }) => {
  const { createPage } = boundActionCreators

  const postTemplate = path.resolve('./src/templates/Post/Post.js')

  graphql(
    `
      {
        allWordpressPost {
          edges {
            node {
              id
              slug
            }
          }
        }
      }
    `
  )
    .then((result) => {
      console.log('posts')
      // const { data, errors } = result

      // if (errors) console.log(errors)

      // if (!data) return

      //data.allWordpressPost.edges.forEach(({ node }) => {
      //  const { id, slug } = node

      //  createPage({
      //    component: postTemplate,
      //    context: {
      //      id,
      //    },
      //    path: slug,
      //  })
      //})
    })

ํŽธ์ง‘: ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•ด createPage ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ•ด๋‹น ํ•ญ๋ชฉ์˜ ์‹คํ–‰์ด 14๋ถ„์œผ๋กœ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ž”์ธํ•˜์ง€๋งŒ ~9000๊ฐœ์˜ ์ถ”๊ฐ€ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๋‹จ 3๋ถ„ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ์ ๋„ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์˜ค๋žซ๋™์•ˆ โ  run graphql queries ์— ๋จธ๋ฌผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: 419.470์ดˆ ๋˜๋Š” 7๋ถ„ ๋™์•ˆ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@pieh ์›์Šค, ๋‚ด๊ฐ€ ๋ณด๊ธฐ ์ „์— ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์ผ ์›๊ฒฉ์œผ๋กœ ์ด ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ€๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋งˆ์ง€๋ง‰ ์ค„์€ Local์„ ํ†ตํ•ด ์ค‘๋‹จ๋˜๊ณ  MAMP๋ฅผ ํ†ตํ•ด ์˜์›ํžˆ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

$ gatsby develop
success delete html and css files from previous builds โ€” 0.017 s
success open and validate gatsby-config โ€” 0.226 s
info One or more of your plugins have changed since the last time you ran Gatsby. As
a precaution, we're deleting your site's cache to ensure there's not any stale
data
success copy gatsby files โ€” 0.013 s
success onPreBootstrap โ€” 0.159 s
โ  source and transform nodes -> wordpress__acf_posts fetched : 100
โ  source and transform nodes -> wordpress__acf_pages fetched : 34
โ ‚ source and transform nodes -> wordpress__acf_media fetched : 100
โ ˆ source and transform nodes -> wordpress__acf_categories fetched : 13
โข€ source and transform nodes -> wordpress__acf_tags fetched : 0
โ „ source and transform nodes -> wordpress__acf_users fetched : 11
โข€ source and transform nodes -> wordpress__POST fetched : 9092
โข€ source and transform nodes -> wordpress__PAGE fetched : 34
โ  source and transform nodes -> wordpress__wp_media fetched : 7483
โก€ source and transform nodes -> wordpress__wp_types fetched : 1
โ  source and transform nodes -> wordpress__wp_statuses fetched : 1
โข€ source and transform nodes -> wordpress__wp_taxonomies fetched : 1
โ „ source and transform nodes -> wordpress__CATEGORY fetched : 14
โ ˆ source and transform nodes -> wordpress__TAG fetched : 19
โ  source and transform nodes -> wordpress__wp_users fetched : 11
โก€ source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "You are not currently logged in."
โ ˆ source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "Sorry, you are not allowed to do that."
โก€ source and transform nodesThe server response was "404 Not Found"
Inner exception message : "No route was found matching the URL and request method"
success source and transform nodes โ€” 636.410 s

@pieh ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ ์†Œ์š”๋จ ) ๋ฌธ์ œ๊ฐ€ ํ™•์‹คํžˆ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค: https://github.com/dustinhorton/gatsby-issue

๋ณต์ œํ•˜๊ณ  ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฅ ๋งˆ๋ฌด๋ฆฌ ๊ณต์‚ฌ ์—†์ด 10์‹œ๊ฐ„ ๋„˜๊ฒŒ ๋‘ ๋ฒˆ๋งŒ ๋›ฐ์—ˆ๋‹ค. ๋””๋ฒ„๊น…์— ๋„์›€์ด ๋˜๋„๋ก ์ œ๊ฐ€ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌํ•ญ์„ ์•Œ๋ ค์ฃผ์„ธ์š”.

v2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ด์™€ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ์‚ฌ์ดํŠธ์˜ ์†๋„๋ฅผ ๊ทน์ ์œผ๋กœ ๋†’์—ฌ์•ผ ํ•˜๋Š” ๋‹ค์–‘ํ•œ gatsby ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ์†๋„๋ฅผ ์—„์ฒญ๋‚˜๊ฒŒ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@KyleAMathews ์˜ค๋Š˜ ๋ฐค์— ํ•œ ๋ฒˆ

@KyleAMathews v2 ๋ฒ„์ „ @ https://github.com/dustinhorton/gatsby-v2-issue. ์ด ์‹œ์ ์—์„œ ์•ฝ 50๋ถ„ ๋™์•ˆ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ์ฃฝ์—ฌ. ์‚ฌ์ดํŠธ๊ฐ€ ์•„์ง ๊ตฌ์ถ•๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ https://next.gatsbyjs.org/docs/performance-tracing/ ์ถ”์ ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์•„์ง gatsby-source-wordpress์— ์ถ”์  ์ง€์›์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ถ”์  ๋ณด๊ณ ์„œ๋Š” ์ค‘๋‹จ๋˜๋Š” ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์ข‹์€ PR์€ gatsby-source-wordpress์— ์ถ”์  ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์•Œ์•„๋‘์„ธ์š”!

๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์„ ๊ตฌ์ œํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ „ํ†ต์ ์ธ ํ…Œ๋งˆ๋กœ ์ด์‹ํ•˜๋Š” ๋ฐ ๋ชจ๋“  ์‹œ๊ฐ„์„ ํ• ์• ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Gatsby๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์— ์••๋„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์ด ๋„ˆ๋ฌด ๋’ค๋กœ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด ์กฐ์‚ฌํ•  ๊ธฐํšŒ๊ฐ€ ์—†์–ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค :-( v2๋ฅผ ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ง€๊ธˆ ์ „๋ ฅ์งˆ์ฃผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

WP ์‚ฌ์ดํŠธ๋ฅผ ๊ณ„์† ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ํ™•์‹คํžˆ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋„์›€์„ ์š”์ฒญํ•˜๋Š” ํŠธ์œ—์„ ๋‚จ๊ฒผ์œผ๋‹ˆ ๊ณง ๋ˆ„๊ตฐ๊ฐ€ ์ด ๋ฌธ์ œ์— ๋›ฐ์–ด๋“ค๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค :-)

https://twitter.com/gatsbyjs/status/1027079401287102465

์™€์šฐ, ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๋Š” ๋‹น๋ถ„๊ฐ„ ์•„๋ฌด๋ฐ๋„ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ๋ณธ์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  repo repo๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” @dustinhorton ๋˜ํ•œ ์•ž์— CDN์ด ์žˆ๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๊ณผ ๋น„๊ตํ•˜์—ฌ Local by Flywheel์—์„œ ๋” ํฐ(์ตœ๋Œ€ 1,000๊ฐœ ๊ฒŒ์‹œ๋ฌผ) ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Gatsby์— ๋Œ€ํ•œ REST ์‘๋‹ต์€ ํ”„๋กœ๋•์…˜๋ณด๋‹ค ๋กœ์ปฌ์—์„œ 10~20๋ฐฐ ๋” ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์•„์ง ๋กœ์ปฌ์—์„œ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ด์ง€ ์•Š์•˜์ง€๋งŒ ํ•  ์ผ ๋ชฉ๋ก์— ์žˆ์Šต๋‹ˆ๋‹ค. :)

@KyleAMathews source-wordpress์— ์ถ”์ ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Khristopho ๊ต‰์žฅํ•˜๊ตฐ์š” !

@dustinhorton ๋นŒ๋“œ๋ฅผ ๋ถ€ํ’€๋ฆด ์ˆ˜ ์žˆ๋Š” ์ƒ˜ํ”Œ ์‚ฌ์ดํŠธ(https://dustinhorton.com/gatsby-wp/wp-content/uploads/2018/07/IMG_9906.jpg ๋“ฑ)์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด 404๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ. ๊ทธ ๊ฒฝ๋กœ๋ฅผ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

WP_MEDIA ์š”์ฒญ์€ ๊ฒฐ๊ณผ์™€ ํ•จ๊ป˜ ์ƒ๋‹นํžˆ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋ฏ€๋กœ
๋ช…ํ™•ํ•˜์ง€๋งŒ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ด๋ฒˆ ์ฃผ ํ›„๋ฐ˜์— ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

2018๋…„ 8์›” 8์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 5:45 Chris Wiseman [email protected]
์ผ๋‹ค:

@dustinhorton https://github.com/dustinhorton
์ƒ˜ํ”Œ ์‚ฌ์ดํŠธ์˜ ์ด๋ฏธ์ง€(
https://dustinhorton.com/gatsby-wp/wp-content/uploads/2018/07/IMG_9906.jpg,
์˜ˆ๋ฅผ ๋“ค์–ด) ๋นŒ๋“œ ์‹œ๊ฐ„์„ ๋ถ€ํ’€๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ํ•  ์ˆ˜์žˆ๋Š” ๋ชจ๋“  ๊ธฐํšŒ
๊ทธ๊ฒƒ๋“ค์„ ์œ„ํ•œ ๊ฒฝ๋กœ๋ฅผ ์‚ดํŽด๋ณผ๊นŒ์š”?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/gatsbyjs/gatsby/issues/6654#issuecomment-411562589 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAXFNRHTA-vqIwCTtioejUL-Ei3nM0Lbks5uO1vygaJpZM4VZ57n
.

์‚ฌ์‹ค์ด์ง€๋งŒ ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋‹จ๊ณ„์˜ ์ผ๋ถ€๋Š” REST ์‘๋‹ต์—์„œ ์ฐพ์€ ๋ชจ๋“  ๋ฏธ๋””์–ด ํ•ญ๋ชฉ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-wordpress/src/normalize.js#L434

7504 ์ด๋ฏธ์ง€์—์„œ 404๋ฅผ ์–ป์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ;)

๋‚ด๊ฐ€ ๋ชจ๋“  404๋ฅผ ์ฒญ์†Œํ–ˆ๋‹ค๊ณ  ๋ฏฟ์œผ์‹ญ์‹œ์˜ค. ์˜ค๋Š˜ ๋ฐค ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ฒ‰๋ณด๊ธฐ์— ๋ณ€ํ™”๊ฐ€ ์—†์Œ:

~/Sites/gatsby-issue-v2 (master)
โ†’yarn build
yarn run v1.5.1
$ gatsby build
success open and validate gatsby-config โ€” 0.009 s
success load plugins โ€” 0.277 s
success onPreInit โ€” 0.257 s
success delete html and css files from previous builds โ€” 0.008 s
success initialize cache โ€” 0.245 s
success copy gatsby files โ€” 0.079 s
success onPreBootstrap โ€” 0.001 s
โ 
=START PLUGIN=====================================

Site URL: http://dustinhorton.com/gatsby-wp
Site hosted on Wordpress.com: false
Using ACF: true
Using Auth: undefined undefined
Verbose output: true

Mama Route URL: http://dustinhorton.com/gatsby-wp/wp-json

โ  source and transform nodesRoute discovered : /
Invalid route.
Route discovered : /oembed/1.0
Invalid route.
Route discovered : /oembed/1.0/embed
Invalid route.
Route discovered : /oembed/1.0/proxy
Invalid route.
Route discovered : /yoast/v1
Valid route found. Will try to fetch.
Route discovered : /yoast/v1/configurator
Valid route found. Will try to fetch.
Route discovered : /yoast/v1/reindex_posts
Valid route found. Will try to fetch.
Route discovered : /yoast/v1/ryte
Valid route found. Will try to fetch.
Route discovered : /yoast/v1/indexables/(?P<object_type>.*)/(?P<object_id>\d+)
Invalid route.
Route discovered : /yoast/v1/statistics
Valid route found. Will try to fetch.
Route discovered : /acf/v3
Invalid route.
Route discovered : /acf/v3/posts/(?P<id>[\d]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/posts
Valid route found. Will try to fetch.
Route discovered : /acf/v3/pages/(?P<id>[\d]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/pages
Valid route found. Will try to fetch.
Route discovered : /acf/v3/media/(?P<id>[\d]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/media
Valid route found. Will try to fetch.
Route discovered : /acf/v3/categories/(?P<id>[\d]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/categories
Valid route found. Will try to fetch.
Route discovered : /acf/v3/tags/(?P<id>[\d]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/tags
Valid route found. Will try to fetch.
Route discovered : /acf/v3/comments/(?P<id>[\d]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/comments
Valid route found. Will try to fetch.
Route discovered : /acf/v3/options/(?P<id>[\w\-\_]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/users/(?P<id>[\d]+)/?(?P<field>[\w\-\_]+)?
Invalid route.
Route discovered : /acf/v3/users
Valid route found. Will try to fetch.
Route discovered : /wp/v2
Invalid route.
Route discovered : /wp/v2/posts
Valid route found. Will try to fetch.
Route discovered : /wp/v2/posts/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/posts/(?P<parent>[\d]+)/revisions
Invalid route.
Route discovered : /wp/v2/posts/(?P<parent>[\d]+)/revisions/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/pages
Valid route found. Will try to fetch.
Route discovered : /wp/v2/pages/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/pages/(?P<parent>[\d]+)/revisions
Invalid route.
Route discovered : /wp/v2/pages/(?P<parent>[\d]+)/revisions/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/media
Valid route found. Will try to fetch.
Route discovered : /wp/v2/media/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/types
Valid route found. Will try to fetch.
Route discovered : /wp/v2/types/(?P<type>[\w-]+)
Invalid route.
Route discovered : /wp/v2/statuses
Valid route found. Will try to fetch.
Route discovered : /wp/v2/statuses/(?P<status>[\w-]+)
Invalid route.
Route discovered : /wp/v2/taxonomies
Valid route found. Will try to fetch.
Route discovered : /wp/v2/taxonomies/(?P<taxonomy>[\w-]+)
Invalid route.
Route discovered : /wp/v2/categories
Valid route found. Will try to fetch.
Route discovered : /wp/v2/categories/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/tags
Valid route found. Will try to fetch.
Route discovered : /wp/v2/tags/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/users
Valid route found. Will try to fetch.
Route discovered : /wp/v2/users/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/users/me
Valid route found. Will try to fetch.
Route discovered : /wp/v2/comments
Valid route found. Will try to fetch.
Route discovered : /wp/v2/comments/(?P<id>[\d]+)
Invalid route.
Route discovered : /wp/v2/settings
Valid route found. Will try to fetch.
Added ACF Options route.

Fetching the JSON data from 25 valid API Routes...

=== [ Fetching wordpress__yoast_v1 ] === https://dustinhorton.com/gatsby-wp/wp-json/yoast/v1
โ ˆ source and transform nodes -> wordpress__yoast_v1 fetched : 1
Fetching the wordpress__yoast_v1 took: 936.166ms

=== [ Fetching wordpress__yoast_configurator ] === https://dustinhorton.com/gatsby-wp/wp-json/yoast/v1/configurator
โข€ source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "Sorry, you are not allowed to do that."
Fetching the wordpress__yoast_configurator took: 846.014ms

=== [ Fetching wordpress__yoast_reindex_posts ] === https://dustinhorton.com/gatsby-wp/wp-json/yoast/v1/reindex_posts
โข€ source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "Sorry, you are not allowed to do that."
Fetching the wordpress__yoast_reindex_posts took: 1010.589ms

=== [ Fetching wordpress__yoast_ryte ] === https://dustinhorton.com/gatsby-wp/wp-json/yoast/v1/ryte
โ   source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "Sorry, you are not allowed to do that."
Fetching the wordpress__yoast_ryte took: 1022.977ms

=== [ Fetching wordpress__yoast_statistics ] === https://dustinhorton.com/gatsby-wp/wp-json/yoast/v1/statistics
โ „ source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "Sorry, you are not allowed to do that."
Fetching the wordpress__yoast_statistics took: 820.827ms

=== [ Fetching wordpress__acf_posts ] === https://dustinhorton.com/gatsby-wp/wp-json/acf/v3/posts
โ ˆ source and transform nodes -> wordpress__acf_posts fetched : 100
Fetching the wordpress__acf_posts took: 6352.670ms

=== [ Fetching wordpress__acf_pages ] === https://dustinhorton.com/gatsby-wp/wp-json/acf/v3/pages
โก€ source and transform nodes -> wordpress__acf_pages fetched : 34
Fetching the wordpress__acf_pages took: 2760.048ms

=== [ Fetching wordpress__acf_media ] === https://dustinhorton.com/gatsby-wp/wp-json/acf/v3/media
โ ˆ source and transform nodes -> wordpress__acf_media fetched : 100
Fetching the wordpress__acf_media took: 4273.250ms

=== [ Fetching wordpress__acf_categories ] === https://dustinhorton.com/gatsby-wp/wp-json/acf/v3/categories
โ  source and transform nodes -> wordpress__acf_categories fetched : 13
Fetching the wordpress__acf_categories took: 1029.029ms

=== [ Fetching wordpress__acf_tags ] === https://dustinhorton.com/gatsby-wp/wp-json/acf/v3/tags
โ ˆ source and transform nodes -> wordpress__acf_tags fetched : 0
Fetching the wordpress__acf_tags took: 941.066ms

=== [ Fetching wordpress__acf_comments ] === https://dustinhorton.com/gatsby-wp/wp-json/acf/v3/comments
โข€ source and transform nodes -> wordpress__acf_comments fetched : 9
Fetching the wordpress__acf_comments took: 2868.036ms

=== [ Fetching wordpress__acf_users ] === https://dustinhorton.com/gatsby-wp/wp-json/acf/v3/users
โ   source and transform nodes -> wordpress__acf_users fetched : 11
Fetching the wordpress__acf_users took: 2049.181ms

=== [ Fetching wordpress__POST ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/posts
โ  source and transform nodes
Total entities : 9094
Pages to be requested : 91
โ  source and transform nodes -> wordpress__POST fetched : 9094
Fetching the wordpress__POST took: 152767.807ms

=== [ Fetching wordpress__PAGE ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/pages
โข€ source and transform nodes -> wordpress__PAGE fetched : 34
Fetching the wordpress__PAGE took: 2194.895ms

=== [ Fetching wordpress__wp_media ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/media
โข€ source and transform nodes
Total entities : 7504
Pages to be requested : 76
โข€ source and transform nodes -> wordpress__wp_media fetched : 7485
Fetching the wordpress__wp_media took: 132029.996ms

=== [ Fetching wordpress__wp_types ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/types
โข€ source and transform nodes -> wordpress__wp_types fetched : 1
Fetching the wordpress__wp_types took: 956.603ms

=== [ Fetching wordpress__wp_statuses ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/statuses
โข€ source and transform nodes -> wordpress__wp_statuses fetched : 1
Fetching the wordpress__wp_statuses took: 1017.845ms

=== [ Fetching wordpress__wp_taxonomies ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/taxonomies
โ   source and transform nodes -> wordpress__wp_taxonomies fetched : 1
Fetching the wordpress__wp_taxonomies took: 1029.885ms

=== [ Fetching wordpress__CATEGORY ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/categories
โข€ source and transform nodes -> wordpress__CATEGORY fetched : 14
Fetching the wordpress__CATEGORY took: 943.710ms

=== [ Fetching wordpress__TAG ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/tags
โ   source and transform nodes -> wordpress__TAG fetched : 19
Fetching the wordpress__TAG took: 1104.454ms

=== [ Fetching wordpress__wp_users ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/users
โก€ source and transform nodes -> wordpress__wp_users fetched : 11
Fetching the wordpress__wp_users took: 1325.604ms

=== [ Fetching wordpress__wp_me ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/users/me
โ ‚ source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "You are not currently logged in."
Fetching the wordpress__wp_me took: 926.146ms

=== [ Fetching wordpress__wp_comments ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/comments
โ ‚ source and transform nodes
Total entities : 9410
Pages to be requested : 95
โก€ source and transform nodes -> wordpress__wp_comments fetched : 9397
Fetching the wordpress__wp_comments took: 85370.673ms

=== [ Fetching wordpress__wp_settings ] === https://dustinhorton.com/gatsby-wp/wp-json/wp/v2/settings
โ  source and transform nodesThe server response was "401 Unauthorized"
Inner exception message : "Sorry, you are not allowed to do that."
Fetching the wordpress__wp_settings took: 808.396ms

=== [ Fetching wordpress__acf_options ] === http://dustinhorton.com/gatsby-wp/wp-json/acf/v2/options
โ ‚ source and transform nodesThe server response was "404 Not Found"
Inner exception message : "No route was found matching the URL and request method"
Fetching the wordpress__acf_options took: 1059.276ms

=END PLUGIN=====================================: 412457.896ms
โ  source and transform nodes

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์•ฝ 8์‹œ๊ฐ„ ๋™์•ˆ ๊ฑฐ๊ธฐ์— ์•‰์•„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

@dustinhorton ์–ด๋–ค ํ˜ธ์ŠคํŒ…์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ณ„์‹ ๊ฐ€์š”? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์š”์ฒญ์˜ ์–‘์œผ๋กœ ๋‹น์‹ ์˜ ์ƒ์‚ฐ ์ƒ์ž๋ฅผ ์ฃฝ์ด๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋™์‹œ ์—ฐ๊ฒฐ์„ 1 ๋˜๋Š” 2์™€ ๊ฐ™์ด ๋‚ฎ์€ ๊ฒƒ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์™„๋ฃŒํ–ˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค(8์‹œ๊ฐ„์ด ์•„๋‹Œ ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์—).

Linode์—์„œ ๊ดœ์ฐฎ์€ VPS์ž…๋‹ˆ๋‹ค. ๋„์›€์ด ๋œ๋‹ค๋ฉด ์„ค์ •์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋Š” ๋กœ์ปฌ์—์„œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/blob/46290c2b0e7894fca036bdcc658a5d1936c4221f/packages/gatsby-source-filesystem/src/create-remote-file-node.js#L133 -L159 ์ด ๋” ํด ๋•Œ ๋•Œ๋•Œ๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ˆ˜ - ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด ํ•ด๊ฒฐ๋˜์ง€๋งŒ ํŒŒ์ผ ์“ฐ๊ธฐ ์ŠคํŠธ๋ฆผ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ›„ ์‹œ๊ฐ„ ์ œํ•œ์˜ ์ผ์ข… ์ถ”๊ฐ€ ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐ responseStream ๊ธฐ๋‹ค๋ฆด ๋งˆ๋ฌด๋ฆฌ fsWriteStream ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค ์•„๋งˆ๋„ (๋ชจ๋“  ์ž์›์„ ํŒŒ๊ดดํ•˜๊ณ  ๋‹ค์‹œ ์“ฐ๊ธฐ ํŒŒ์ผ์„ ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช‡ ๋ฒˆ๋งŒ ๋‹ค์‹œ ์‹œ๋„) ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์„ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@pieh ์ด ํŒŒ์ผ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋œ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

/packages/gatsby-source-filesystem/src/create-remote-file-node.js

@aman-developer ์•„์ง ์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ๋ฌธ์ œ๋Š” ์ด๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ ๋ชจ๋“  ์ˆ˜์ • ์‚ฌํ•ญ์€ ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ (ํ•˜๋“œ์›จ์–ด ๋ฐ / ๋˜๋Š” OS์˜ ํŠน์ • ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค) ์–ด๋–ค ๊ฒฝ์šฐ์— ํŒŒ์ผ ์‹œ์Šคํ…œ writeStream ์™„๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ๋ฐ ์ˆ˜์ •์ด ์ •๋ง๋กœ ์—ฌ๊ธฐ์—์„œ ํ•ด๊ฒฐ ๋ฌธ์ œ์— ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜๋ฅผ ๋˜์ง€๊ณ ์—†์ด ๋ถ™์–ด ์ ์  fs ํŒจํ‚ค์ง€ / ํ•˜๋“œ์›จ์–ด / OS ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Œ :/

๋‚ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์‚ฌ์ดํŠธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ผ๊ด€์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

createRemoteFileNode๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์•ฝ 680/780ish์—์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

createRemoteFileNode์—๋Š” https://github.com/sindresorhus/got/releases/tag/v8.0.0 ์— ์ถ”๊ฐ€๋œ downloadProgress ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์žˆ์ง€๋งŒ gatsby-source-filesystem์€ 7.1.0์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „ 9.2.2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ๋„ํ–ˆ๊ณ  ์ด์ œ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

package.json์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

  "resolutions": {
    "got": "^9.2.2"
  }

๋˜ํ•œ 7.1.0 ์ดํ›„์—๋Š” ์ŠคํŠธ๋ฆผ ์˜ค๋ฅ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ๋“ฑ์˜ ์ค‘์š”ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. (https://github.com/sindresorhus/got/releases/tag/v8.0.1)

got ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฐ€๋” ์ค‘๋‹จ๋˜์ง€๋งŒ ์–ด์จŒ๋“  ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. downloadProgress ์€ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋” ๋‚˜์€ ์ถœ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„/์ฝ˜์†”์„ ์‚ฌ์šฉํ•  ๋•Œ ์ง„ํ–‰ ์ƒํ™ฉ์ด ์ŠคํŒธ์œผ๋กœ ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

~25๋ถ„ ํ›„์— gatsby develop ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ create-remote-file-node.js์˜ ๋™์‹œ์„ฑ์„ 200์—์„œ 20์œผ๋กœ ์ค„์—ฌ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. 22๊ฐœ์˜ TimeoutErrors๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ gatsby ๊ฐœ๋ฐœ์„ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ) processRemoteNode์˜ ๋นˆ ์บ์น˜์— ๋กœ๊ทธ๋ฅผ ๋„ฃ์€ ํ›„.

get ๋•Œ๋ฌธ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹ค๋ฅธ http ํด๋ผ์ด์–ธํŠธ๋กœ ์‹คํ—˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

...
success source and transform nodes โ€” 1407.531 s
success building schema โ€” 3.315 s
success createPages โ€” 0.571 s
success createPagesStatefully โ€” 2.797 s
success onPreExtractQueries โ€” 0.012 s
success update schema โ€” 3.268 s
warning There are conflicting field types in your data. GraphQL schema will omit those fields.
wordpress__wp_media.media_details.width:
 - type: number
   value: 916
 - type: string
   value: '224'
wordpress__wp_media.media_details.height:
 - type: number
   value: 916
 - type: string
   value: '225'
wordpress__wp_media.media_details.sizes.thumbnail.width:
 - type: number
   value: 150
 - type: string
   value: '150'
wordpress__wp_media.media_details.sizes.thumbnail.height:
 - type: number
   value: 150
 - type: string
   value: '150'
wordpress__wp_media.media_details.sizes.medium.width:
 - type: number
   value: 300
 - type: string
   value: '300'
wordpress__wp_media.media_details.sizes.medium.height:
 - type: number
   value: 300
 - type: string
   value: '200'
wordpress__wp_media.media_details.sizes.large.width:
 - type: number
   value: 768
 - type: string
   value: '1024'
wordpress__wp_media.media_details.sizes.large.height:
 - type: number
   value: 1024
 - type: string
   value: '682'
wordpress__wp_media.media_details.image_meta.aperture:
 - type: number
   value: 2.2
 - type: string
   value: '0'
wordpress__wp_media.media_details.image_meta.created_timestamp:
 - type: boolean
   value: false
 - type: number
   value: 1433226914
 - type: string
   value: '0'
wordpress__wp_media.media_details.image_meta.focal_length:
 - type: number
   value: 0
 - type: string
   value: '0'
wordpress__wp_media.media_details.image_meta.iso:
 - type: number
   value: 0
 - type: string
   value: '0'
wordpress__wp_media.media_details.image_meta.shutter_speed:
 - type: number
   value: 0
 - type: string
   value: '0'
wordpress__wp_media.media_details.image_meta.orientation:
 - type: number
   value: 1
 - type: string
   value: '1'
warning Using the global `graphql` tag is deprecated, and will not be supported in v3.
Import it instead like:  import { graphql } from 'gatsby' in file:
/Users/tandingan.wlb/Projects/gatsby/gatsby-issue/src/templates/Post/Post.js
success extract queries from components โ€” 0.120 s
success run graphql queries โ€” 223.335 s โ€” 9121/9121 40.84 queries/second
success write out page data โ€” 0.119 s
success write out redirect data โ€” 0.001 s
success onPostBootstrap โ€” 0.027 s

info bootstrap finished - 1643.854 s
{ TimeoutError: Timeout awaiting 'request' for 30000ms
    at Immediate.timeoutHandler [as _onImmediate] (/Users/tandingan.wlb/Projects/gatsby/gatsby-issue/node_modules/got/source/timed-out.js:39:25)
    at runCallback (timers.js:694:11)
    at tryOnImmediate (timers.js:664:5)
    at processImmediate (timers.js:646:5)
  name: 'TimeoutError',
  code: 'ETIMEDOUT',
  host: 'dustinhorton.com',
  hostname: 'dustinhorton.com',
  method: 'GET',
  path: '/gatsby-wp/wp-content/uploads/2015/05/20150302_061259.jpg',
  socketPath: undefined,
  protocol: 'https:',
  url:
   'https://dustinhorton.com/gatsby-wp/wp-content/uploads/2015/05/20150302_061259.jpg',
  event: 'request' }

ํ”„๋ฆฌ์ฆ˜๊ณผ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

"got": "^9.2.2"๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ž‘์—… ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค!

got ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ํ™•์‹คํžˆ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ„ํ—์  ์ธ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ž‘๋™ํ•˜๋Š” ์šฐ์—ฐ์˜ ์ผ์น˜ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @RobinHerzog got ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฒ„์ „์—์„œ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

got ์—…๋ฐ์ดํŠธํ•˜๋ฉด repo repo์˜ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ๋‹จ์ถ•๋˜์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹œ๋„ํ•œ ์‹œ๊ฐ„์€ ๊ฑฐ์˜ 1์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

@dustinhorton ๋นŒ๋“œ์˜ ์–ด๋–ค ๋ถ€๋ถ„์ด ์ด๋ฏธ์ง€๋ฅผ source and transform data )?

1GB ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์— 150MB ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋นŒ๋“œ๋ฅผ ๊ณ„์†ํ•˜๋ ค๋ฉด 30์ดˆ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ์ด ๋ฌธ์ œ๋ฅผ ์ง€์†์ ์œผ๋กœ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. got ์—…๊ทธ๋ ˆ์ด๋“œํ•ด๋„ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋„๋ก source-wordpress์— ์ถ”๊ฐ€ ์ถ”์ ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๊นŒ?

concurrentRequests ๋ฐ perPage ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ•˜๊ณ  concurrentRequests got ๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ categories , posts , pages ๋ฐ tags ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ users ๋˜๋Š” media , =END PLUGIN=== ๋ฐ”๋กœ ๋’ค์— ํ”Œ๋Ÿฌ๊ทธ์ธ์ด TypeError: Cannot read property 'id' of undefined ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜๊ณ  ๋‚ด๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋ฉด =END PLUGIN=== ๋ฐ›์ง€๋งŒ ์™„๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•œ ์ˆ˜๋งŽ์€ ์›น ์‚ฌ์ดํŠธ์— ์ ์šฉ๋˜๋ฏ€๋กœ ์–ด๋–ป๊ฒŒ๋“  ๋‚ด ์‹œ์Šคํ…œ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. . ๋ˆ„๊ตฌ๋“ ์ง€ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    {
      resolve: 'gatsby-source-wordpress',
      options: {
        // Other URLs I tried:
        // https://clubedovalor.com.br
        // http://rivainvestimentos.com.br
        // http://queroinvestiragora.com/
        // https://www.clubedospoupadores.com/
        baseUrl: "aprenda.guiainvest.com.br",
        protocol: "https",
        hostingWPCOM: false,
        useACF: false,
        concurrentRequests: 10,
        perPage: 50,
        // Going with the excluded routes path
        // excludedRoutes: [
        //   '/*/*/plugins',
        //   '/rock-convert/**',
        //   '/yoast/**',
        //   '/wp-super-cache/**',
        //   '/*/*/users/me',
        //   '/*/*/settings',
        // ],
        verboseOutput: true,
        includedRoutes: [
          "/*/*/categories",
          "/*/*/posts",
          "/*/*/pages",
          "/*/*/tags",
          // You can toggle between media and users (or both)
          // All 3 scenarios will fail with the `'id' of undefined`
          // problem
          // "/*/*/media",
          "/*/*/users",
        ],
      },

์ถ”์‹ : ๋‚ด๊ฐ€ ๊ฐ€์ ธ์˜ค๊ธฐ _did_ ๊ด€๋ฆฌํ•œ URL ์ค‘ ํ•˜๋‚˜๋Š” https://wesbos.com/

HAPPY ์—…๋ฐ์ดํŠธ : ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด๋กœ (์ž‘์€ sites_ _For) ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌ includedRoutes ๋„ ํ•จ๊ป˜ users ๋ฐ / ๋˜๋Š” media ์„ ํฌํ•จํ•˜์—ฌ taxonomies ์ฟผ๋ฆฌ . ์ด์ œ 'id' of undefined ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :D

@pieh users ๋ฐ media ์œ ํ˜•์€ taxonomies ์ข…์†๋˜๋ฏ€๋กœ ๊ตฌ์„ฑ์— ์ด๋Ÿฌํ•œ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฌํ•จ๋  ๋•Œ๋งˆ๋‹ค ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”! ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด taxonomies ๋ฒ„๊ทธ๋Š” ๋ฌดํ•œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์™€ ๊ด€๋ จ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 500๊ฐœ ์ด์ƒ์˜ ๋ฏธ๋””์–ด ํŒŒ์ผ๋ณด๋‹ค ํฐ ์‚ฌ์ดํŠธ์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

์—…๋ฐ์ดํŠธ ๋ฒˆํ˜ธ 2 : ๊ทธ๋ž˜์„œ queroinvestiragora.com ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. =END PLUGIN=== ์ดํ›„์—๋Š” ๋Œ€๋žต 15์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ www.clubedospoupadores.com ์—๋Š” 702๊ฐœ์˜ ๋ฏธ๋””์–ด ํŒŒ์ผ๊ณผ 336๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์œผ๋ฉฐ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ถ”์‹ : ์ด ์‹คํ—˜์—์„œ ๋‚ด ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    {
      resolve: 'gatsby-source-wordpress',
      options: {
        baseUrl: "queroinvestiragora.com",
        protocol: "http",
        hostingWPCOM: false,
        useACF: false,
        concurrentRequests: 10, // I've also tried removing it and going with the default, it's the same result
        verboseOutput: true,
        includedRoutes: [
          "/*/*/categories",
          "/*/*/posts",
          "/*/*/pages",
          "/*/*/tags",
          "/*/*/media",
          "/*/*/users",
          "/*/*/taxonomies",
        ],
      },
    },

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

https://www.gatsbyjs.org/docs/performance-tracing/์— ์„ค๋ช…๋œ ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์ ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๋‹จ์ˆœํžˆ ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ๊ฐ€ ๊ฝค ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๋งํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฏธ์ง€์™€ ๊ด€๋ จ๋œ ์ผ๋ถ€ ๋น„๊ฒฐ์ •์  ๋™์ž‘์„ ํ•œ ํ›„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž์ฒด ๋””๋ฒ„๊น…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋˜๋Š” ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ชจ๋“  ์ด๋ฏธ์ง€๊ฐ€ ๋‹ค์šด๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  localFile ๋…ธ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํŒŒํ—ค์นœ ํ›„ ์—ฌ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/blob/ad142af473fc8dc8555a5cf23a0dfca42fcbbe90/packages/gatsby-source-wordpress/src/normalize.js#L483 -L506

๋‚˜๋ฅผ ์œ„ํ•ด createRemoteFile ๋…ธ๋“œ๋Š” ์„œ๋ฒ„ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์‹คํŒจํ–ˆ์œผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ null์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ค์ œ ์„œ๋ฒ„ ์‘๋‹ต์„ ์–ป๊ธฐ ์œ„ํ•ด createRemoteFile ๋…ธ๋“œ์—๋„ ์ผ๋ถ€ ๋กœ๊น…์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ธ๋“œ๋Š” ์™„๋ฃŒ๋˜์ง€ ์•Š๊ณ  ID๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ์— ๋“ฑ๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. tmp ํŒŒ์ผ์ด ์‚ญ์ œ๋˜๊ณ  gatsby-source-filesystem์ด ๋ถˆ์™„์ „ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ์—์„œ๋“ (๋‚˜๋Š” ์•„์ง ๋ฉ€๋ฆฌ ๋ณด์ง€ ์•Š์•˜์Œ) ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๋•Œ ์†Œ์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ถˆ์™„์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฃจํ”„๋ฅผ ๋งŒ๋“ค๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์ ˆ๋Œ€ ์™„๋ฃŒ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ–ฅํ›„ ๋นŒ๋“œ์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์€ ์ด ํ”„๋กœ์„ธ์Šค์˜€์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ ์–ด๋„ ๋งŽ์€ ์–‘์˜ ์ด๋ฏธ์ง€์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ์ˆ˜์ • ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋˜๋Š” ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ์ดํ›„์— ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€๊ฐ€ gatsby-source-filesystem์— ์˜ํ•ด ์ ์ ˆํ•˜๊ฒŒ ์บ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค! ๋‚ด ๋นŒ๋“œ๋Š” 15๋ถ„์—์„œ 1๋ถ„์œผ๋กœ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ฒŒ์‹œ๋ฌผ์ด ๋งŽ์€ ๋นŒ๋“œ์™€ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ฌธ์ œ๋Š” 1.6GB์˜ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ์™€ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

gatsby์šฉ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฒˆ์ด ์ฒ˜์Œ์ด๋ฏ€๋กœ ๋ˆ„๊ตฌ๋“ ์ง€ ์ด์— ๋Œ€ํ•ด ์ƒ๊ฐ์ด๋‚˜ ์กฐ์–ธ์ด ์žˆ์œผ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์˜ค๋Š˜ ๋‚˜์ค‘์— ๋‚ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋กœ์ปฌ ๋ฒ„์ „์˜ gatsby-source-filesystem์„ ๋ฌธ์ œ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ฉฐ์น  ์ „ ์ œ ๋Œ“๊ธ€์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋‚ด ์ €์žฅ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/njmyers/byalejandradesign.com.git

์ €๋Š” ์ด ํ”„๋กœ์ ํŠธ์—์„œ monorepo๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ช‡ ๊ฐ€์ง€ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ตœ์‹  ๋ฒ„์ „์˜ Yarn 1.12.3์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  2. ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ธŒ๋žœ์น˜ ๋ณต์ œ git clone https://github.com/njmyers/byalejandradesign.com.git -b wordpress-plugin
  3. yarn && yarn bootstrap
  4. gatsby ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ cd packages/web ํด๋”
  5. yarn develop ๋˜๋Š” yarn build-web ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์–ด์•ผ ํ•˜๋ฉฐ ์ดํ›„์— ๋™์ผํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค! ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ๋Š” ์ด์ „๋ณด๋‹ค 3๋ฐฐ๋‚˜ ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— 222๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
  6. ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ์ค‘์— ์‹ค์ œ๋กœ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด /packages/web/.cache/gatsby-source-filesystem ์—์„œ ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ณด๋ฉด ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” downloadMediaFiles ๊ธฐ๋Šฅ์„ ์™„์ „ํžˆ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งํฌ์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/njmyers/byalejandradesign.com/blob/wordpress-plugin/packages/gatsby-source-wordpress/src/download-media-files.js

์•„๋งˆ๋„ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ์žฅํ™ฉํ•˜์ง€๋งŒ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณ€๊ฒฝํ•œ ๊ธฐ๋Šฅ์€ createRemoteFileNode๊ฐ€ null์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์•ฝ์† ๊ฑฐ๋ถ€๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‚˜๋Š” ํ•จ์ˆ˜ downloadRunner๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ œํ•œํ•˜์—ฌ ๋ชจ๋“  ์š”์ฒญ์ด ํ•œ ๋ฒˆ์— ์„œ๋ฒ„์— ๋„๋‹ฌํ•˜์ง€ ์•Š๊ณ  ์•ฝ์† ๊ฑฐ๋ถ€ ์‹œ ์žฌ์‹œ๋„ํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ createRemoteFileNode ์š”์ฒญ ์‚ฌ์ด์— 200ms ์Šค๋กœํ‹€์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ์ค‘ ์ผ๋ถ€๋Š” createRemoteFileNode์— ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ WP ์„ค์น˜๋Š” EC2 ๋งˆ์ดํฌ๋กœ ์ธ์Šคํ„ด์Šค์ด๊ณ  ์ด๋ฏธ์ง€๋Š” CloudFront ๋ฐฐํฌ ๋’ค์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ฒŒ์‹œ๋ฌผ์„ ์–ป๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ฌธ์ œ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์–ป๋Š” ๊ฒƒ์ด์—ˆ์œผ๋ฉฐ ์‚ฌ๋žŒ๋“ค์ด ๊ฒช๊ณ  ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋Š” ์ด๊ฒƒ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ˆ„๊ตฐ๊ฐ€ ์ž์‹ ์˜ ์‚ฌ์ดํŠธ๋ฅผ ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ๋””๋ฒ„๊ทธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค...

https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-filesystem/src/create-remote-file-node.js#L240 -L244

catch ์ ˆ์— ๋กœ๊น…์„ ์ถ”๊ฐ€ํ–ˆ๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋‹ค์Œ null์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ด๋ฏธ์ง€ ๋…ธ๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

@njmyers ๋‚˜๋Š” createRemoteFileNode ์—์„œ ์œ ์‚ฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง์ ‘ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฑฐ๊ธฐ์—์„œ queue ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด ํ•จ์ˆ˜์˜ ์†Œ๋น„์ž(์ด ๊ฒฝ์šฐ gatsby-source-wordpress )๋Š” ์ด์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ž ์žฌ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์ง€๋Š” 200ms ์Šค๋กœํ‹€์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋กœํ‹€ ์—†์ด ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์Šค๋กœํ‹€(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๋‹น)์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

@pieh ์˜ˆ, ์•„๋งˆ๋„ ์ด ๋…ผ๋ฆฌ๋ฅผ ์ ์šฉํ•  ์žฅ์†Œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์กฐ์ ˆ์€ ์ด ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— createRemoteFileNode ์ž์ฒด์ ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

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

1) ์ธ๋งฅ์„ ๋นจ๋ฆฌ ํ˜•์„ฑํ•˜๋ผ
2) ์„œ๋ฒ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์กฐ์ ˆ์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
3) ์กฐ์ ˆ/์žฌ์‹œ๋„์— ๋Œ€ํ•œ ์ •์ƒ์ ์ธ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •
4) ์กฐ์ ˆ/์žฌ์‹œ๋„ ์กฐ์ •์„ ์œ„ํ•œ ์ง„์ž…์  ์ƒ์„ฑ
4) ์–ด๋–ค ์ด์œ ๋กœ ๋…ธ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์•ฝ์†์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-filesystem/src/create-remote-file-node.js#L135 ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๋†€์•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. L141. ๊ทธ๊ฒƒ์ด ์„ฑ๊ณต์ ์ธ ์‘๋‹ต์˜ ํ™•๋ฅ ์„ ๋†’์˜€์ง€๋งŒ ์„ฑ๊ณต์ ์ธ ์‘๋‹ต์„ ๋ณด์žฅ ํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€

์ด ๋…ผ๋ฆฌ์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์ง„์ž…์ ์ด ์—ฌ๊ธฐ์— ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-filesystem/src/create-remote-file-node.js#L259 -L269

ํƒœ์Šคํฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์žฌ์‹œ๋„ ๋ฐ/๋˜๋Š” ์‹คํŒจํ•œ ํ›„ ์ตœ์ข…์ ์œผ๋กœ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ queue ๋ฌธ์„œ๋ฅผ ๊ฐ„๋‹จํžˆ ์ฝ์œผ์‹ญ์‹œ์˜ค. queue ์ž์ฒด์ ์œผ๋กœ ์ด๊ฒƒ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ง์”€ํ•˜์‹œ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@njmyers ๋ฉ‹์ง„ ์กฐ์‚ฌ ์ž‘์—…! ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ์Šค๋งˆํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค!

์›๊ฒฉ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์บ์‹ฑํ•˜๋Š” ์ด ๋ฌธ์ œ์— ์ดˆ์ ์„ ๋งž์ถ˜ ์ž์ฒด ํŒจํ‚ค์ง€๋กœ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ์กฐ๊ฐ์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ์ข‹์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gatsby์™€ ๋ฏธ๋ž˜์˜ ์—ฌ๋Ÿฌ ์œ„์น˜์—์„œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ์ธํ„ฐ๋„ท์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@KyleAMathews createRemoteFileNode ๋ฅผ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋กœ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์บ์‹ฑ ๋ถ€๋ถ„๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ createRemoteFileNode๋Š” ์ด ํŒจํ‚ค์ง€๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ๋  ๋•Œ(๋˜๋Š” ์บ์‹œ์—์„œ ๋ฐ˜ํ™˜๋  ๋•Œ) ํ•ด๊ฒฐ๋  ์•ฝ์†์„ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋‚ด ์ž์‹ ์˜ ์กฐ์ข…์„ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋„ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋กœ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋” ๋น„์Šทํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-filesystem/src/create-remote-file-node.js#L125 -L244

์ด๊ฒƒ์€ ํŠนํžˆ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์บ์‹ฑ์„ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ œ๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ €๋ฅผ ์ˆ˜์ •ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ์ด ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค! ๋” ํฐ ์ƒํƒœ๊ณ„์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์‹ญ์‹œ์˜ค.

gatsby-source-wordpress๋งŒ ์ˆ˜์ •ํ•˜๋Š” PR์ด ํ—ˆ์šฉ๋˜๊ณ  ๋‚˜์ค‘์— ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๊นŒ? @njmyers fork ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ์—„์ฒญ๋‚œ ๊ฐœ์„ ์ด ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@dustinhorton ์€ ์ด๊ฒƒ์ด ๋„์›€์ด ๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋กœ์ปฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด gatsby๊ฐ€ package.json ํŒŒ์ผ์„ ์ง์ ‘ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€ gatsby์—์„œ ๋กœ์ปฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ฐพ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/njmyers/byalejandradesign.com/blob/d56b1938f6d1bc22c3cf2282bb3198e378fe3561/packages/web/gatsby-config.js#L91 -L94

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

https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-filesystem/src/create-remote-file-node.js#L125 -L244

์ž์ฒด ํŒจํ‚ค์ง€๋กœ ์ถ”์ถœํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ฆ‰, createRemoteFileNode ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ์ƒํƒœ๊ณ„์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‹ค์‹œ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ๋„๋ก ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@njmyers ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์ฝ”๋“œ ์„ ํƒ์ด ๋Œ€๋ถ€๋ถ„ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค - ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ์šฐ๋ฆฌ์˜ ํ˜„์žฌ ๋Œ€๊ธฐ์—ด(200๊ฐœ์˜ ๋™์‹œ ์š”์ฒญ์œผ๋กœ ATM ์ œํ•œ, ๋กœ์ปฌ ๊ฐœ๋ฐœ ๋ฐ ์›Œ๋“œํ”„๋ ˆ์Šค์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ž„)์ด ์ด๋™๋˜๊ณ  ์•„๋งˆ๋„ ๋ณ€๊ฒฝ๋˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@dustinhorton ์ €๋Š” ์ด๊ฒƒ์„ wordpress ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋จผ์ € ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„ ์‹ค์ œ๋กœ ์™„๋ฃŒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—).

@pieh ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž„์‹œ wordpress-source ์ˆ˜์ •๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‚ด ์œ ์ผํ•œ ๋‹ค๋ฅธ ์งˆ๋ฌธ์€ ์—ฌ๊ธฐ์„œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์ž…๋‹ˆ๋‹ค.

https://github.com/njmyers/byalejandradesign.com/blob/d56b1938f6d1bc22c3cf2282bb3198e378fe3561/packages/gatsby-source-wordpress/src/download-media-files.js#L169 -L173

ํ˜„์žฌ๋กœ์„œ๋Š” ์—ฌ์ „ํžˆ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ „์ฒด downloadMediaFiles ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ catch ์ ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. gatsby์— ์˜ค๋ฅ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋™์ž‘์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ํ•ธ๋“ค๋Ÿฌ์— ์ ์ ˆํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ wordpress ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@njmyers ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ๋ชจ๋…ธ๋ ˆํฌ( package.json ์ฐธ์กฐ ํฌํ•จ)๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ๊ฐ€๊น๊ฒŒ ์„ค์ •์„ ๋ณต์ œํ–ˆ์Šต๋‹ˆ๋‹ค. develop ์‹คํ–‰ํ•˜๋ฉด ๋งˆ์น˜ gatsby-source-wordpress ๊ฐ€ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ž ์‹œ ํ›„์— ๋‹ค์‹œ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋…ธ๋ ˆํฌ๋ฅผ ๋” ์ถฉ์‹คํ•˜๊ฒŒ ์žฌํ˜„ํ–ˆ๊ณ  ์ด์ƒํ•˜๊ฒŒ๋„ source and transform nodes ์•‰์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

@pieh @ https://github.com/gatsbyjs/gatsby/issues/6654#issuecomment -442536931 ?

@dustinhorton ๋„ค, ์ด๋ฏธ์ง€๊ฐ€ ๋งŽ์œผ๋ฉด ๊ฝค ์˜ค๋ž˜ ์•‰์•„ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ์— ์‹คํŒจํ•˜๋ฉด ๋‚ด ํฌํฌ์—์„œ unhandled promise rejection ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ผ์ข…์˜ ์ง„ํ–‰ ๊ด€๋ฆฌ์ž ํ†ตํ•ฉ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์ฝ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

project-root/.cache/gatsby-source-filesystem ์•„๋ž˜์˜ OS ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋ณด๋ฉด ๋‹ค์šด๋กœ๋“œ ์ค‘์ธ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์ด์ œ ๊ฑฐ์˜ 400๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๊ธฐ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž๋™์œผ๋กœ ์‹คํŒจํ•˜๊ณ  ์ง„ํ–‰๋˜์ง€ ์•Š์•„ ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜์— ๋ช‡ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค...

๋ ˆํฌ๊ฐ€ ์žˆ๋‚˜์š”? ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด ์‚ฌ์ดํŠธ์˜ ์‹ค์ œ ์ƒํ™ฉ์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@njmyers ๊ทธ๊ฒŒ ์›์น™์ž…๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์œผ์‹œ๋‹ค๋ฉด [email protected] ์œผ๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด ๊ธฐ๋‹ค๋ฆฌ์„ธ์š” . ์˜ค๋Š˜ ์ €๋…์— ์ค€๋น„ํ•  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

got ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ €์—๊ฒŒ๋„ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

got@9 ์˜ ๋ฌธ์ œ๋Š” Node 8(https://github.com/sindresorhus/got/releases/tag/v9.0.0)์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ATM์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ got@8 ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

got@8 ๋Š” RFC 7234 ํ˜ธํ™˜ HTTP ์บ์‹ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฏ€๋กœ gatsby-source-filesystem์€ ์ž์ฒด ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ ์บ์‹œ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋‘ ๋ฒˆ์งธ๋กœ ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ์—์„œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ตœ์†Œํ•œ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํžˆ์•ผ!

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

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

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

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

@gatsbot ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์„ ์œ„ํ•ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๊ธฐ๊ณ ํ•ด ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ์— ๋ถ™์–ด ์žˆ์œผ๋ฏ€๋กœ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜์ง€๋งŒ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ณณ์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ์—…์ŠคํŠธ๋ฆผ์ธ gatsbyjs์˜ ํฌํฌ์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ํ•ญ์ƒ ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ๋ช‡๋ช‡ ์‚ฌ์ดํŠธ์—์„œ ์Šคํฌ๋ฆฐ์ƒท์„ ์บก์ฒ˜ํ•˜๋Š” ๋ฐ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์นจ์— ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@ twhite96 ๋ฐฉ๊ธˆ ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค๊ณ  ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•œ ๊ฒƒ์€ (emacs์—์„œ) ์—ด๋ ค ์žˆ๋˜ ์ž„์‹œ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋„์›€์ด ๋ ์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋นŒ๋“œ๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฒŒ ์•„์ง ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

gatsby-source-s3๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 100์žฅ์˜ ์‚ฌ์ง„์„ ๊ฐ€์ ธ์™€ ์„ ๋ช…ํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•  ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ป๊ฒŒ ๋“  ๋‚ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค (๋ฌด์ž‘์œ„๋กœ?). ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ทจํ•œ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋” ์ ์€ ์ˆ˜์˜ ์‚ฌ์ง„์œผ๋กœ ์ƒˆ s3 ๋ฒ„ํ‚ท์„ ๋งŒ๋“  ๋‹ค์Œ ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋Œ์•„๊ฐ€์„œ ์›๋ž˜ ๋ฒ„ํ‚ท์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋Š”๋ฐ ์›๋ž˜๋Š” ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ๊ณ„์†๋˜๋˜ 49์ดˆ์— ๊ฐ‘์ž๊ธฐ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํ‚ท ๋งํฌ์˜ ๋‹จ์ˆœํ•œ ์Šค์œ„์น˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์Šคํ†จ์„ ๊ณ ์ณค๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ ์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์บ์‹œ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…• ๋ชจ๋‘. ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ์— ์‚ฌ์šฉํ•˜๋˜ ๋กœ์ปฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. 'createRemoteNode' ์ „์— 'better-queue'๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  'concurrentRequests' ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ๊ตฌํ˜„์ด ๋” ๋‚˜์€ ๊ฒƒ ๊ฐ™์•„์š”. 'createRemoteNode'๊ฐ€ ์ด๋ฏธ ๋Œ€๊ธฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ์ค‘๋ณต๋˜์ง€๋งŒ ์ด ๋ฒ„์ „๊ณผ ์ƒ๊ด€์—†์ด ์ตœ๊ทผ ๊ฐœ์ธ ๋น„ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ํŒŒ์ผ ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํ•จ๊ป˜ PR์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋Šฆ์–ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋” ์ผ์ฐ ์ž‘์—…ํ•˜๊ฒ ๋‹ค๊ณ  ๋งํ–ˆ์ง€๋งŒ ๊ฝค ๋ฐ”๋นด์Šต๋‹ˆ๋‹ค!

https://github.com/njmyers/byalejandradesign.com/blob/wordpress-plugin/packages/gatsby-source-wordpress/src/download-media-files.js

@njmyers

์ •๋ง ๊ณ ๋งˆ์›Œ. ๊ท€ํ•˜์˜ ๋ฒ„์ „์€ ๋‚ด๊ฐ€ ๊ฒช๊ณ  ์žˆ๋˜ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. 25GB์˜ mp3 ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด ํ•œ๋‘ ์ค„๋กœ ๊ฒฐํ•ฉํ–ˆ์œผ๋ฉฐ ์ด์ œ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

ํ™•์‹คํžˆ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
์ง€๋‚œ 24์‹œ๊ฐ„ ๋™์•ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ 12๋ฒˆ์˜ ์‹œ๋„ ์ค‘ 3๋ฒˆ์€ ์ถœ๋ ฅ๊ณผ ์‹ค์ œ WP ์—ฐ๊ฒฐ์— ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
BTW, ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ @njmyers ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ(์‹ค์ œ๋กœ ๋ฉ‹์ง„ ์ž‘์—…์ด์—ˆ์Šต๋‹ˆ๋‹ค!) ๊ฒฐ๊ณผ๊ฐ€ ํ˜ผํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” wordpress_parent ๋˜๋Š” Date์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๊ณ  ๊ฒฐ๊ตญ ์ถฉ๋Œํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋นŒ๋“œ์—์„œ๋Š” ๋‹ค๋ฅธ ์˜ค๋ฅ˜(ํ•˜์ง€๋งŒ ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค)๊ฐ€ ์‹ค์ œ๋กœ GraphQL์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค.

@lucassilvagc ์ผ๋ถ€ ์ถœ๋ ฅ์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์‚ฌ๋žŒ๋“ค์ด ์ง€์ ์„ ์‹œ๋„ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. PR์„ ์—ด ์ˆ˜ ์žˆ๋„๋ก ๋” ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ํ•ฉ์‹œ๋‹ค!

@njmyers ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค!

์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๊ฐœ์š”:

๋‚ด ์›น ์‚ฌ์ดํŠธ๋Š” ํ˜„์žฌ ~1940๊ฐœ์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ƒ์„ฑํ•œ WordPress์˜ ์ž˜๋ชป์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐ”๋‹๋ผ _gatsby-source-wordpress_๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์˜๋„ํ•œ ๋Œ€๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค(์–ด์ œ ์ €๋… ๋‹ค๋ฅธ ๋นŒ๋“œ ํ™˜๊ฒฝ์—์„œ ๋งŒ๋“  "๋ฐ”๋‹๋ผ" ๋นŒ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋นŒ๋“œ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ๋ฐ˜ํ™˜๋˜๋ฉด ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๊ณ  ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค). ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด(node_modules/gatsby-source-wordpress ๋‚ด๋ถ€์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค(์ž˜๋ชป๋œ ๊ฒฝ์šฐ ์ˆ˜์ •)), _gatsby development_๋Š” ๋‹ค์Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

TypeError: Cannot read property 'wordpress_parent' of undefined

  - normalize.js:287 entities.map.e
    [amazingtec]/[gatsby-source-wordpress]/normalize.js:287:11

  - Array.map

  - normalize.js:286 Object.exports.mapElementsToParent.entities [as mapElementsToParent]
    [amazingtec]/[gatsby-source-wordpress]/normalize.js:286:12

  - gatsby-node.js:134 Object.exports.sourceNodes
    [amazingtec]/[gatsby-source-wordpress]/gatsby-node.js:134:24


warning The gatsby-source-wordpress plugin has generated no Gatsby nodes. Do you need it?
success source and transform nodes โ€” 299.757 s
success building schema โ€” 10.192 s

์ž ์‹œ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

'Cannot query field "allWordpressPage" on type "Query". Did you mean "allSitePage"?',
    locations: [ [Object] ] } ]
error UNHANDLED REJECTION

  TypeError: Cannot read property 'allWordpressPage' of undefined

  - gatsby-node.js:54 graphql.then.result
    C:/Projects/amztec-gtby/amazingtec/gatsby-node.js:54:36

์ถ”์‹ : ์ด๊ฒƒ์€ ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ํŒŒ์ผ์„ ๊ต์ฒดํ•˜์—ฌ _"๋ณ€ํ™˜๋œ"_ gatsby-source-wordpress์˜ ๋ฐ”๋‹๋ผ ๋นŒ๋“œ์˜€์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ƒ์„ฑ๋˜๋Š” ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ๋นŒ๋“œ๊ฐ€ ์ด ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์„ ๋•Œ ์ž‘๋™ํ•˜๋Š” ๋ฐ”๋‹๋ผ ๋นŒ๋“œ์™€ ๋™์ผํ•˜๋‹ค๋Š” ์ ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋™์ผํ•œ ์ดˆ๊ธฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค(WordPress์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋ณดํ˜ธ ๊ณ„์ธต์œผ๋กœ ์ธํ•ด ๊ด€๋ จ์ด ์—†๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ํ”ผํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—). ๋‚ด๊ฐ€ ๋‚˜์—ดํ•œ ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ๋˜๋Š” ์ดํ›„์— ๋ˆ„๋ฝ๋œ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ํšŒ์‹ ์— ๋งค์šฐ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ํ˜„์žฌ ์ œ ํ”„๋กœ์ ํŠธ์— ํฐ ์ฐจ์งˆ์„ ๋นš๊ณ  ์žˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ๊ณ„์‹œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

acf ํ•„๋“œ์™€ 4000๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” 400๊ฐœ ์ด์ƒ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฒŒ์‹œ๋ฌผ์— ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—…๋ฐ์ดํŠธํ–ˆ๊ณ  35 ๋ถ„์œผ๋กœ ๋นŒ๋“œ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

got ์—…๋ฐ์ดํŠธํ•œ ํ›„ ๋‹ค์‹œ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋Œ€๋กœ ์ด ๋ฒ„๊ทธ๋Š” ์—ฌ์ „ํžˆ gatsby-wordpress์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ 35๋ถ„์€ ๋ชจ๋“  ์š”์†Œ(ํ‰๊ท  ์ธํ„ฐ๋„ท ์†๋„, ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ, ์ด ํŒŒ์ผ ์ˆ˜ ๋“ฑ)๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ๋งค์šฐ ๊ธด ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
@njmyers ๋ฒ„์ „์„ ํŠน์ • ์šฉ๋„์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋Œ€๋กœ ์ด ๋ฒ„๊ทธ๋Š” ์—ฌ์ „ํžˆ gatsby-wordpress์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ 35๋ถ„์€ ๋ชจ๋“  ์š”์†Œ(ํ‰๊ท  ์ธํ„ฐ๋„ท ์†๋„, ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ, ์ด ํŒŒ์ผ ์ˆ˜ ๋“ฑ)๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ๋งค์šฐ ๊ธด ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
@njmyers ๋ฒ„์ „์„ ํŠน์ • ์šฉ๋„์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์ดํŠธ๋Š” ์ด๋ฏธ์ง€ ์ˆ˜๊ฐ€ ์ ์—ˆ์„ ๋•Œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ ๋” ์ถ”๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@MWalid got ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”.

ํ•˜๋ฃจ ์ข…์ผ ์„ฑ๊ณตํ•˜์ง€ ์•Š์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ 1450๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ 2์ผ ๋™์•ˆ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์ด ๋ฐœ์ƒํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์•ˆ๋‚ดํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ง€๊ธˆ 2์ผ ๋™์•ˆ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์ด ๋ฐœ์ƒํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์•ˆ๋‚ดํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ got ์˜ ์ค‘์ฒฉ ๋œ ์˜์กด์„ฑ gatsby-source-filesystem ์ด์ƒ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” 9.4.0 ?

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  "resolutions": {
    "gatsby-source-filesystem/got": "9.4.0"
  }

Gatsby ํ”„๋กœ์ ํŠธ์˜ package.json . ๊ทธ๋Ÿฐ ๋‹ค์Œ node_modules ๋ฐ yarn.lock ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

์ฐธ๊ณ : ์ด resolutions ๊ธฐ๋Šฅ์€ yarn ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. npm ๋Š” ์•„์ง ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@anagstef ํŒ์„ ์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ๋‹ค์‹œ๋ณด๊ณ  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

gatsby develop ์‹คํ–‰ํ•  ๋•Œ ๋ช…๋ น์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋Œ€์‹  ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@anagstef ๊ฐ€ ํ›จ์”ฌ ๋” ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ํŒ ๊ณ ๋งˆ์›Œ!

์ด ๋ฒ„์ „์˜ got์œผ๋กœ ๋นŒ๋“œํ•  ๋•Œ ์ถœ๋ ฅ์ด ๋งค์šฐ ์žฅํ™ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฑฐ ์—†์• ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์•„์„ธ์š”?

@nratter ๋„์›€์ด ๋˜์…จ ๋‹ค๋‹ˆ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค!

์˜ˆ, ๋งค์šฐ ์žฅํ™ฉํ•˜๋ฉฐ ๋Œ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ๋ชจ๋“  ์œ ์šฉํ•œ ์ฝ˜์†” ์ถœ๋ ฅ์„ ๋ง์นฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•œ ๋ช‡ ๊ฐ€์ง€ ์กฐ์‚ฌ ํ›„์—, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์—ฌ๊ธฐ์—์„œ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
https://github.com/gatsbyjs/gatsby/blob/80c7023a8bc23886939205fe52e305277294e6af/packages/gatsby-source-filesystem/src/create-remote-file-node.js#L155

๋ณด์‹œ๋‹ค์‹œํ”ผ ์ดˆ๋‹น ๋„ˆ๋ฌด ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” downloadProgress ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ ํŒŒ์ผ์˜ ๋‹ค์šด๋กœ๋“œ ์ง„ํ–‰๋ฅ ๊ณผ ํ•จ๊ป˜ console.log ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ got ๋ฒ„์ „์—์„œ๋Š” downloadProgress ์ด๋ฒคํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

PR๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋‚จ์€ ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"์— ๋ถ™์–ด ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ console.logs ํ›„์— ๋‚ด ๋ฌธ์ œ๋Š” wordpress์—์„œ ๋ฏธ๋””์–ด ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•ฝ 350๊ฐœ ์š”์ฒญ ํ›„ Cloudflare ์†๋„ ์ œํ•œ ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Cloudflare๋ฅผ ์šฐํšŒํ•˜๊ณ  vps๋กœ ๋ฐ”๋กœ ์ด๋™ํ–ˆ๋Š”๋ฐ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"๊ฐ€ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋กœ์ปฌ ์›Œ๋“œํ”„๋ ˆ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์œผ๋ฉฐ ๋ผ์ด๋ธŒ ์‚ฌ์ดํŠธ๋Š” netlify์— ์žˆ์ง€๋งŒ ๋ฐฐํฌํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ๋ณ‘๋ ฌ ๋Œ€์‹  ์ง๋ ฌ๋กœ createRemoteFileNode ์š”์ฒญ์„ ์‹คํ–‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

/**
 * Map over items array using the fn function but wait for each step to finish before moving to the next one
 */
exports.serialMap = async (items, fn) => {
  const results = []
  for (const item of items) {
    const result = await fn(item)
    results.push(result)
  }
  return results
}

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

const imageNodes = await serialMap(node.___originalImages, imgUrl => {
  return createRemoteFileNode({
    url: imgUrl,
    parentNodeId: node.id,
    store,
    cache,
    createNode,
    createNodeId,
  })
})

์ด๋ฏธ์ง€๊ฐ€ ๋‹ค์šด๋กœ๋“œ๋œ ํ›„ ์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋‹จ๊ณ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Downloading remote files [==============================] 1063/1063 156.1 secs 100%
Downloading remote files [==============================] 1064/1064 157.2 secs 100%
Downloading remote files [==============================] 1065/1065 158.4 secs 100%
Downloading remote files [==============================] 1066/1066 159.5 secs 100%
Downloading remote files [==============================] 1067/1067 160.5 secs 100%
Downloading remote files [==============================] 1068/1068 161.5 secs 100%
Downloading remote files [==============================] 1069/1069 162.6 secs 100%
Downloading remote files [==============================] 1070/1070 163.7 secs 100%
Downloading remote files [==============================] 1071/1071 164.9 secs 100%
Downloading remote files [==============================] 1072/1072 166.0 secs 100%
Downloading remote files [==============================] 1073/1073 167.5 secs 100%
Downloading remote files [==============================] 1074/1074 169.2 secs 100%
Downloading remote files [==============================] 1075/1075 171.0 secs 100%
success source and transform nodes โ€” 175.271 s

๊ท€ํ•˜์˜ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๊ฑด๋ฐฐ

@ancashoria ์ด ์ฝ”๋“œ๋ฅผ ์–ด๋””์— ๋„ฃ์–ด์•ผ ํ•˜๋‚˜์š”?

@ancashoria ์˜ˆ, ์ด ์ฝ”๋“œ๋ฅผ ์–ด๋””์—

์ด๊ฒƒ์€ gatsby-source-wordpress ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๋‹ค์†Œ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด gatsby-node.js ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์š”์ฒญ์„ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์š”์ฒญ์ด ์‹คํŒจํ•˜๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์š”์ฒญ์„ ์ฐจ๋ก€๋กœ ์‹คํ–‰ํ•˜๋Š” ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

gatsby-source-wordpress ์—๋„ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋” ๋งŽ์€ ๋„์›€์„ ๋“œ๋ฆฌ์ง€ ๋ชปํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋Œ€ํ•œ ์ด๋ฏธ์ง€์™€ ๋Š๋ฆฐ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Netlify๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๋‚ด ๋กœ์ปฌ ์—ฐ๊ฒฐ์€ 1MB/s ๋‹ค์šด๋กœ๋“œ์— ๋ถˆ๊ณผํ•˜์—ฌ 30์ดˆ ํ›„์— ์‹œ๊ฐ„ ์ดˆ๊ณผ๋˜๊ณ  ํฐ ์ด๋ฏธ์ง€์—์„œ ์‹คํŒจํ•˜๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” 1GB์˜ ๊ด‘์„ฌ์œ ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  '๋Œ€๊ทœ๋ชจ' ์ด๋ฏธ์ง€๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์›Œ๋“œํ”„๋ ˆ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ ํ›„ ๋ธ”๋กœ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ URL์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€์˜ ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์„ค์ •์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, createRemoteFileNode ์š”์ฒญ์„ ๋ณ‘๋ ฌ ๋Œ€์‹  ์ง๋ ฌ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ createRemoteFileNode ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ WP ์„œ๋ฒ„์— ๋„ˆ๋ฌด ๋งŽ์€ 200์˜ ๋™์‹œ์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. CloudFront์— ๋‚ด ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๊ณ  ๊ฑฐ๊ธฐ์—์„œ ์ผ๋ถ€ ์†๋„ ์ œํ•œ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ž ์‹œ ๋™์•ˆ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ถ„๊ธฐ ๋ฒ„์ „์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ gatsby-source-wordpress ์žˆ์ง€ ์•Š๊ณ  gatsby-source-filesystem ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ createRemoteFileNode ํ•จ์ˆ˜์˜ ์†Œ๋น„์ž๋Š” ๊ฑฐ๊ธฐ์—์„œ ๋™์‹œ์„ฑ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ตฌ์„ฑ์—์„œ ๋™์‹œ์„ฑ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด PR์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

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

#!/usr/bin/env node
const path = require('path');
const shell = require('shelljs');

const FILE_PATH = path.resolve(
  __dirname,
  // add path to your root dir here,
  'node_modules',
  'gatsby-source-filesystem/create-remote-file-node.js'
);

shell.sed('-i', 'concurrent: 200', 'concurrent: 20', FILE_PATH);

๋‚˜๋Š” "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"์— ๋ถ™์–ด ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ console.logs ํ›„์— ๋‚ด ๋ฌธ์ œ๋Š” wordpress์—์„œ ๋ฏธ๋””์–ด ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•ฝ 350๊ฐœ ์š”์ฒญ ํ›„ Cloudflare ์†๋„ ์ œํ•œ ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Cloudflare๋ฅผ ์šฐํšŒํ•˜๊ณ  vps๋กœ ๋ฐ”๋กœ ์ด๋™ํ–ˆ๋Š”๋ฐ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"๊ฐ€ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ •ํ™•ํžˆ ๋‚ด ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. Netlify๋Š” 2๋ถ„ ๋ฏธ๋งŒ์œผ๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ 500๊ฐœ์˜ ์†Œ์Šค ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์•ฝ 30๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ์—์„œ ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ๊ณ  CloudFlare ์ƒํƒœ๋ฅผ DNS๋กœ ์„ ํƒ ํ•ด์ œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ฆ‰์‹œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"์— ๋ถ™์–ด ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ console.logs ํ›„์— ๋‚ด ๋ฌธ์ œ๋Š” wordpress์—์„œ ๋ฏธ๋””์–ด ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•ฝ 350๊ฐœ ์š”์ฒญ ํ›„ Cloudflare ์†๋„ ์ œํ•œ ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
Cloudflare๋ฅผ ์šฐํšŒํ•˜๊ณ  vps๋กœ ๋ฐ”๋กœ ์ด๋™ํ–ˆ๋Š”๋ฐ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"๊ฐ€ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ •ํ™•ํžˆ ๋‚ด ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. Netlify๋Š” 2๋ถ„ ๋ฏธ๋งŒ์œผ๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ 500๊ฐœ์˜ ์†Œ์Šค ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์•ฝ 30๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ์—์„œ ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ๊ณ  CloudFlare ์ƒํƒœ๋ฅผ DNS๋กœ ์„ ํƒ ํ•ด์ œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ฆ‰์‹œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ž„์„ ์•Œ์•˜๋‹ค. ์ด์ „์— ๋นŒ๋“œ ์‹คํŒจ์˜ ์›์ธ์ด ๋˜๋Š” ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์—ˆ๊ณ  Cloudflare๊ฐ€ ๋ฌธ์ œ๋ผ๊ณ  ๋ฌด์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ๋ฌธ์ œ๊ฐ€ ์ตœ๊ทผ์— ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ @amcc๊ฐ€ Cloudflare๋ฅผ ํ†ตํ•ด A ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ผ์šฐํŒ…ํ•˜์ง€ ๋”ฐ๋ผ ๋กœ์ปฌ์—์„œ๋„ ์ฆ‰์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹จ์ง€ WP ์†Œ์Šค ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ๋˜ํ’€์ดํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. gatsby-source-prismic ์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. @njmyers ํ•ดํ‚น์œผ๋กœ soure-filesystem์˜ ๋™์‹œ์„ฑ์„ ์ค„์ด๋ฉด ์ €๋ฅผ ์œ„ํ•ด ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฏ€๋กœ ์†๋„๋ผ๊ณ  ์ถ”์ธกํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œํ•œ/๊ณผ๋ถ€ํ•˜ ๋ฌธ์ œ.

์†Œ์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋™์‹œ์„ฑ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

@njmyers ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ํ•ด์„œ ์ฃ„์†กํ•˜์ง€๋งŒ ์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๊ณ 

@alexanderwe ์–ด์จŒ๋“  ์–ด๋ฆฌ์„์€ ํ•ดํ‚น node_modules ์„ค์น˜ ํ›„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” 100 % ํ™•์‹ ํ•˜์ง€๋งŒ ์ €๋Š” ๋ฏฟ์Šต๋‹ˆ๋‹ค postinstall ํ”„๋กœ์ ํŠธ์— package.json ํŒŒ์ผ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ €์—๊ฒŒ Gatsby๋Š” 500๊ฐœ ์ด์ƒ์˜ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ json์„ ์‚ฌ์šฉํ•  ๋•Œ "์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ"์—์„œ ์‹œ๊ฐ„์˜ 50%๋ฅผ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. gatsby-source-custom-api๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋Š” ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ์„œ๋ฒ„์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค.
๋‚ด ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ๋„ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

"gatsby": "^2.9.4",
"gatsby-image": "^2.1.4",
"gatsby-plugin-emotion": "^4.0.7",
"gatsby-plugin-sharp": "^2.1.5",
"gatsby-plugin-typography": "^2.2.13",
"gatsby-source-custom-api": "^2.0.4",
"gatsby-transformer-remark": "^2.4.0",
"gatsby-transformer-sharp": "^2.1.21",

๋””๋ฒ„๊น…ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” gatsby-source-custom-api ๋˜๋Š” source-wordpress์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ๋„ ์ผ์–ด๋‚œ๋‹ค. ์ œ์•ˆ๋œ ๋ชจ๋“  ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ๋„ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ๋‹ค๊ณ  ๋“ค์—ˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ Gatsby์˜ ๋ฐฑ์—”๋“œ๋กœ Wordpress๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@alexanderwe ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€ @njmyers๊ฐ€ ์ œ์•ˆํ•œ ํŒจ์น˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ gatsby-source-wordpress ๋ฐ gatsby-config.js ์˜ ์ฐธ์กฐ์—์„œ ์‹ค์ œ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค๋ฅธ PR์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

@sebastienfi ๋‚œ ๊ทธ๋ƒฅ์ด ๋น„ํ‹€ ๊ฑฐ๋ ธ๋‹ค https://github.com/gatsbyjs/gatsby/issues/14819#event -2418874313 ๋ฐ ํ•ด๋‹น ์ปค๋ฐ‹ https://github.com/gatsbyjs/gatsby/commit/90aa24787b32ef9613b6becbfadab6029ec39ce9#diff -1864dd21828754bdbc63f22b895bee8eํ•˜๋Š” ๋™์‹œ์„ฑ ๋น„์œจ์„ ๊ตฌ์„ฑํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ํ† ๋ก ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/gatsbyjs/gatsby/issues/14636

GATSBY_CONCURRENT_DOWNLOAD ๋ฅผ ๋” ๋‚ฎ์€ ์ˆซ์ž๋กœ ์„ค์ •ํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ? ๊ธฐ๋ณธ์ ์œผ๋กœ 200์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค/๋งฅ:
GATSBY_CONCURRENT_DOWNLOAD=5 gatsby build

์œˆ๋„์šฐ:
setx GATSBY_CONCURRENT_DOWNLOAD 5; gatsby build

@wardpeet
๋‚˜๋Š” ๋…ธ๋ ฅํ–ˆ๋‹ค, ์•„๋ฌด๊ฒƒ๋„ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋‹ค

๋กœ๊ทธ์— ์ด๋ฏธ์ง€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒ€์ƒ‰๋˜์—ˆ์Œ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ํ™•์‹คํžˆ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ํฝ๋‹ˆ๋‹ค... ์šฐ๋ฆฌ๋Š” ๋งˆ๊ฐ ์‹œ๊ฐ„์— ๋Šฆ๊ฒŒ ์‹คํ–‰๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์ •๋ง๋กœ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…...

wordpress ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋””๋ฒ„๊ทธ๋กœ ์„ค์ •ํ•œ ํ›„ ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค.
image
ํ•ญ์ƒ 470-480 ์‚ฌ์ด์— ์ „ํ™”๋ฅผ ๋Š์Šต๋‹ˆ๋‹ค ... ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ™์€ ์žฅ์†Œ์— ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์ด ์‹คํ–‰๋˜๋Š” ์œ„์น˜๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

VPN์„ ์ค‘๊ฐ„์— ํ† ๊ธ€ํ•˜์—ฌ ์ž‘๋™ํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ ์ž์‹ ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‚˜์™€ ์ž๊ฒฉ ์ฆ๋ช…๊ณผ ๊ณต์œ ํ•˜์—ฌ ๋‚ด๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

[email protected] ์œผ๋กœ ๊ฐœ์ธ ๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค.

๋‚ด repo๋Š” ์ด ์‹œ์ ์—์„œ ์‰ฝ๊ฒŒ ๋‹ค์‹œ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋”˜๊ฐ€์— ์žˆ๋˜ db์˜ ๋ฐฑ์—…์ด ์žˆ์ง€๋งŒ ์‚ฌ์ดํŠธ ๊ตฌ์ถ•์„ ์œ„ํ•ด ๋ช‡ ๋…„ ๋™์•ˆ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•ด ๋งค์›” ๋ถ„๋Ÿ‰์˜ ๊ฒŒ์‹œ๋ฌผ์„ ๋‹จ์ผ ๊ฒŒ์‹œ๋ฌผ๋กœ ์ค„์—ฌ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@wardpeet ์ด ๋‚ด repo Ward([email protected])๋ฅผ ์ด๋ฉ”์ผ๋กœ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” Wi-Fi๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋Œ€์—ญํญ์„ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.... ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๋™์‹œ์„ฑ์ž…๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ Netlify์˜ ๋ชจ๋“  ๋นŒ๋“œ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค...

์˜คํ›„ 5:13:43: === [ wordpress__wp_media ๊ฐ€์ ธ์˜ค๊ธฐ ] === https://wildkiwi.com/wp-json/wp/v2/media
์˜คํ›„ 5:13:43: ์ด ๊ฐœ์ฒด ์ˆ˜: 1717
์˜คํ›„ 5:13:43: ์š”์ฒญ ํŽ˜์ด์ง€ ์ˆ˜: 344
์˜คํ›„ 5:13:45: "์ •์˜๋˜์ง€ ์•Š์Œ" ์˜ค๋ฅ˜ ์ฝ”๋“œ๋กœ ์š”์ฒญ์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ฝ”๋“œ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค...

๋™์‹œ ์š”์ฒญ์„ 5๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด Netlify์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ(https://github.com/angeloashmore/gatsby-source-prismic)์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ GATSBY_CONCURRENT_DOWNLOAD=50 ์„ค์ •์ด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ฐ‘์ž๊ธฐ ์ผ์–ด๋‚œ ์ผ์ด๋ฉฐ(์–ด๋Š ๋‚  ๋‚ด ์‚ฌ์ดํŠธ๊ฐ€ ๊ตฌ์ถ•๋˜๊ณ  ๋‹ค์Œ ๋‚ ์€ ๋ณ€๊ฒฝ ์—†์ด) ์–ด๋–ค ์ข…๋ฅ˜์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋„ ์—†์ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ๋‹นํ™ฉ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ๋ฒˆ์— 200๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์ง€๋งŒ ์ผ๋ถ€ ์ปดํ“จํ„ฐ/์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ ๋ช‡ ๊ฐ€์ง€ ์žฌ์‹œ๋„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฝ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๋ฌด๋ฃŒ ๋ฒ„์ „์˜ https://๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ setx GATSBY_CONCURRENT_DOWNLOAD 5; gatsby build ๋ฐ ๋ชจ๋“  ์ด๋ฏธ์ง€(์ผ๋ถ€๋Š” ์น˜์ˆ˜์™€ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ํผ)๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋นŒ๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค . en-gb.wordpress.org/plugins/wp-smushit/.

์—ฌ๋ณด์„ธ์š”! ๋‚ด๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ(WordPress์™€ ๊ด€๋ จ ์—†์Œ)์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  API์—์„œ 1000๊ฐœ ์ด์ƒ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ์˜ ํ•ญ์ƒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚  ๋•Œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

GATSBY_CONCURRENT_DOWNLOAD ์„ค์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 50 , 20 , 5 , ์šด์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

API์—์„œ ํฌ๊ธฐ ๋ชจ์Œ์„ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฐ€์žฅ ํฐ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๊ฐ€์žฅ ์ž‘์€ ์ด๋ฏธ์ง€๋กœ ๋ณ€๊ฒฝํ–ˆ๋Š”๋ฐ๋„ ์ˆ˜์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ์‹คํŒจํ•˜๋Š” ์ด์œ ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ป๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ source and transform nodes ์ด๊ณ  ์˜์›ํžˆ ์นจ๋ฌตํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•œ ๋””๋ฒ„๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์œผ๋ฉด ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

gatsby+wordress ํ†ตํ•ฉ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. createRemoteFileNode๋ฅผ ์‚ฌ์šฉํ•˜๋˜ onCreateNode API์—์„œ ๋นŒ๋“œ๊ฐ€ ์˜์›ํžˆ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜: gatsby-source-filesystem์„ 2.0.4์—์„œ 2.1.8๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  GATSBY_CONCURRENT_DOWNLOAD=50์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹

๋‚ด ํ”„๋กœ์ ํŠธ์— ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ

  System:
    OS: macOS 10.14.6
    CPU: (4) x64 Intel(R) Core(TM) i5-7267U CPU @ 3.10GHz
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 10.16.0 - ~/.nvm/versions/node/v10.16.0/bin/node
    Yarn: 1.17.3 - ~/.yarn/bin/yarn
    npm: 6.9.0 - ~/.nvm/versions/node/v10.16.0/bin/npm
  Languages:
    Python: 2.7.15 - /usr/local/bin/python
  Browsers:
    Chrome: 76.0.3809.100
    Firefox: 68.0.1
    Safari: 12.1.2
  npmPackages:
    gatsby: ^2.13.42 => 2.13.42
    gatsby-cli: ^2.7.34 => 2.7.34
    gatsby-image: ^2.2.14 => 2.2.14
    gatsby-plugin-glamor: ^2.1.3 => 2.1.3
    gatsby-plugin-manifest: ^2.2.4 => 2.2.4
    gatsby-plugin-offline: ^2.2.4 => 2.2.4
    gatsby-plugin-react-helmet: ^3.1.5 => 3.1.5
    gatsby-plugin-sass: ^2.1.10 => 2.1.10
    gatsby-plugin-sharp: ^2.2.9 => 2.2.9
    gatsby-plugin-svg-sprite: ^2.0.1 => 2.0.1
    gatsby-source-filesystem: ^2.1.18 => 2.1.18
    gatsby-source-wordpress: ^3.1.12 => 3.1.12
    gatsby-transformer-sharp: ^2.2.5 => 2.2.5

๋‚ด WP ์‚ฌ์ดํŠธ์— 80000๊ฐœ ์ด์ƒ์˜ ๋ฏธ๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. npx gatsby develop ์‹คํ–‰ํ•  ๋•Œ "END PLUGIN" ์ดํ›„์— ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

...
=== [ Fetching wordpress__TAG ] === https://[WP_REST_API]/wp-json/wp/v2/tags

Total entities : 8805
Pages to be requested : 89
 -> wordpress__TAG fetched : 8805
Fetching the wordpress__TAG took: 12408.827ms
โ €
=== [ Fetching wordpress__wp_partners ] === https://[WP_REST_API]/wp-json/wp/v2/partners
 -> wordpress__wp_partners fetched : 22
Fetching the wordpress__wp_partners took: 1268.292ms
โ €
=END PLUGIN=====================================: 377120.512ms
โ ผ source and transform nodes

GATSBY_CONCURRENT_DOWNLOAD ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋ฏธ๋””์–ด ์ˆ˜๋Ÿ‰ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด :

{
  resolve: `gatsby-source-filesystem`,
  options: {
    name: `images`,
    path: `${__dirname}/src/images/uploads`,
    limit: 50,
  },
},

์—ฌ๊ธฐ์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์ฒด ํ˜ธ์ŠคํŒ… WP์—๋Š” 1690๊ฐœ์˜ ๋ฏธ๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์›๊ฒฉ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋‹จ๊ณ„๊ฐ€ ๋๋‚  ๋•Œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ํ•˜๋‚˜์˜ ๋ฏธ๋””์–ด๋งŒ ๋ˆ„๋ฝ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค...

ํŽธ์ง‘: ์ด๋ฒˆ์—๋Š” GATSBY_CONCURRENT_DOWNLOAD=5 yarn build ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค ...

@kvalium ๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. GATSBY_CONCURRENT_DOWNLOAD=5 yarn build ๊ฐ€) ์ €์—๊ฒŒ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ํ„ฐ๋ฏธ๋„ ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#4666์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ์˜๊ฒฌ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค :

rm -r node_modules/ 
rm -r .cache
sudo chown -R login:login . 
fuser -k 8000/tcp 
yarn 
gatsby build
gatsby develop

๋„์›€์ด ๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ธฐ๋ฐœํ•œ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‚ด ๊ฒฝํ—˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • โŒ ์ด ๋ฌธ์ œ๋Š” macOS High Sierra(iTerm ์‚ฌ์šฉ)์—์„œ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
  • โœ… GATSBY_CONCURRENT_DOWNLOAD=50 gatsby develop ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค(๋ช‡ ์ฃผ ๋™์•ˆ ๊ทธ๋žฌ์Šต๋‹ˆ๋‹ค)
  • โŒ Mojave๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ๊ธ€๋กœ๋ฒŒ Gatsby ์„ค์น˜๋ฅผ 2.7.47 ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๋‹ค์Œ ๋‹ค์‹œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค(iTerm ์‚ฌ์šฉ)
  • โŒ GATSBY_CONCURRENT_DOWNLOAD ๋ฅผ 5๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
  • โŒ .cache ๋ฐ node_modules ๋‚ ๋ ค๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.
  • โŒ gatsby develop ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ iTerm ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค(50 ๋ฐ 5 ๋ชจ๋‘ ์‚ฌ์šฉ).
  • โŒ iTerm์ด ์•„๋‹Œ "ํ„ฐ๋ฏธ๋„" ์•ฑ์—์„œ GATSBY_CONCURRENT_DOWNLOAD=50 gatsby develop ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • โœ… 2์ฃผ ํ›„ iTerm์—์„œ GATSBY_CONCURRENT_DOWNLOAD=50 gatsby develop ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ์ฐฝ ํฌ๊ธฐ๋ฅผ ๋ช‡ ๋ฒˆ ์กฐ์ •ํ–ˆ๋Š”๋ฐ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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

์—…๋ฐ์ดํŠธ: ์˜ค๋Š˜ ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ์˜ฌ๋ฐ”๋ฅธ ์ง€์ ์—์„œ iTerm ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ธ์ง€ ์•„๋‹ˆ๋ฉด 93%์—์„œ 100%๋กœ ๊ฐ€๋Š” ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ๋ญ”๊ฐ€ ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค.

GATSBY_CONCURRENT_DOWNLOAD = 5๋ฅผ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ gatsby-node.js ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

// ๊ตญ์ œํ™”
export.onPostBuild = () => {
ChildProcess.execSync("ps aux | grep jest | grep -v grep | awk '{print $2}' | xargs kill")
console.log('๋กœ์ผ€์ผ โ€‹โ€‹๋ณต์‚ฌ')
fs.copySync(๊ฒฝ๋กœ.join(__dirname, '/src/locales'), path.join(__dirname, '/public/locales))
}

532314892 @bradydowling :

์˜ฌ๋ฐ”๋ฅธ ์ง€์ ์—์„œ iTerm ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋™์•ˆ iTerm ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ–ˆ๊ณ  bam - ๊ฐ‘์ž๊ธฐ ๊ณ„์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ์—ฐ์˜ ์ผ์น˜์ธ์ง€, ์•„๋‹ˆ๋ฉด...

@bradydowling @davegregg ์™€์šฐ ๊ธฐ์ดํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๋‚ด iTerm ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ํŠธ๋ฆญ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@TylerBarnes ์ด๊ฒƒ์ด ๋ฌด์—‡์ด๋“ , ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด Wordpress์™€ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. Wordpress์™€ ๊ด€๋ จ๋œ ๊ฒƒ์€ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@beauhankins ์–ด๋•Œ์š”?

@davegregg @beauhankins @bradydowling ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ๊ณณ์—์„œ

@TylerBarnes ๋‚˜์ค‘์— ๋‚ด๊ฐ€ ๋ณด์•˜๋˜ ์ €์žฅ์†Œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์กฐ๊ธˆ ๋งŒ์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ  ์‚ฌํ•ญ: ํ˜„์žฌ CLI์—์„œ ์„ค์น˜ํ•œ ๊ฒƒ๋ณด๋‹ค ์ด์ „ ๋ฒ„์ „์˜ Gatsby๋กœ Gatsby ์‚ฌ์ดํŠธ๋ฅผ ๋ณต์ œํ•˜๋Š” ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” VS ์ฝ”๋“œ ํ„ฐ๋ฏธ๋„์—์„œ commends๋ฅผ ์‹คํ–‰ํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค (๋‚˜๋Š” bash๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๊ฒƒ์€ ์˜์›ํžˆ ๊ฑธ๋ฆฌ๊ณ  ์œ„์—์„œ ์ œ์•ˆํ•œ๋Œ€๋กœ ์ „์ฒด ํ™”๋ฉด ๋ชจ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

@bradydowling ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! cli๋ณด๋‹ค ์ด์ „ ๋ฒ„์ „์˜ Gatsby๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ ๋ฐ ๋นŒ๋“œ์šฉ npm ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "scripts": {
    "develop": "gatsby develop",
    "build": "gatsby build"
  }
} 

๊ทธ๋Ÿฐ ๋‹ค์Œ npm run develop ๋˜๋Š” yarn develop ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ๋กœ์ปฌ ๋ฒ„์ „์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ ๋™์•ˆ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด CI=1 yarn build ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐฐํ›„์—์„œ ๋‹ค๋ฅธ ๋ฆฌํฌํ„ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ์ž‘๋™ํ•œ๋‹ค๋ฉด ์ €ํฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค!

@dustinhorton :

v2 ๋ฒ„์ „ @ https://github.com/dustinhorton/gatsby-v2-issue. ์ด ์‹œ์ ์—์„œ ์•ฝ 50๋ถ„ ๋™์•ˆ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ›„์šฐ. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์•ฝ 1 ๋…„ ์ „์— ๊ฒŒ์‹œ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ์ดํ›„๋กœ Gatsby๊ฐ€ ๋งŽ์ด ๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ๋•Œ(๊ทธ๋ฆฌ๊ณ  package.json์—์„œ gatsby ๋ฒ„์ „์„ *๋กœ ์„ค์ •) ๋นŒ๋“œ๋Š” ์•ฝ 2000์ดˆ(~33๋ถ„) ์•ˆ์— ์™„๋ฃŒ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ cli๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ ๋” ๊ตฌ์ฒด์ ์ธ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— "๋Š๋‚Œ"์ด ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋ฉด์—์„œ ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“œ๋Š” ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์‹ฑ ๋‹จ๊ณ„๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์‹œ๊ฐ„(1968/1975์ดˆ)์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์›๊ฒฉ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ๋Š” ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„(1845์ดˆ)์ž…๋‹ˆ๋‹ค.

์ด ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋‹จ์ผ ์™•๋ณต ์—ฌํ–‰์„ ๋ณผ ๋•Œ ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ๋†€๋ผ๊ฒŒ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# Starting requestInQueue, _concurrentRequests= 10
@ requestInQueue for 75 tasks { concurrent: 10 } { id: 'url' }
@ Fetch http://dustinhorton.com/gatsby-wp/wp-json/wp/v2/media?per_page=100&page=4: 2587.339ms
@ Fetch http://dustinhorton.com/gatsby-wp/wp-json/wp/v2/media?per_page=100&page=10: 2661.584ms
@ Fetch http://dustinhorton.com/gatsby-wp/wp-json/wp/v2/media?per_page=100&page=8: 2695.937ms
@ Fetch http://dustinhorton.com/gatsby-wp/wp-json/wp/v2/media?per_page=100&page=2: 2738.339ms
@ Fetch http://dustinhorton.com/gatsby-wp/wp-json/wp/v2/media?per_page=100&page=6: 2853.199ms

๊ฐ ์š”์ฒญ์—๋Š” ์•ฝ 2~4์ดˆ๊ฐ€ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ํƒ์ƒ‰ ์ค‘ ์ฒ˜์Œ์— ๊ฐ€์ ธ์˜ค๋Š” 75ํŽ˜์ด์ง€๋Š” ์ด 18์ดˆ(!)๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋น ๋ฅธ ์—ฐ๊ฒฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜ wget์œผ๋กœ ๊ทธ ํƒ€์ด๋ฐ์„ ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๊ธด ๋‹จ๊ณ„๋Š” ์•ฝ 7500๊ฐœ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์š”์ฒญ์— 2~4์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์ด ๋†€๋ž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  1845์ดˆ์˜ ๊ธฐ๋ณธ ๋‹ค์šด๋กœ๋“œ ์ŠคํŠธ๋ ˆ์น˜ ๋™์•ˆ ์•ฝ๊ฐ„์˜ ์ผ์‹œ ์ค‘์ง€๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ์„œ๋ฒ„์ธ์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋™์‹œ์„ฑ์„ 5๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค).

๋‚˜๋Š” ํ„ฐ๋ฏธ๋„์˜ ๋„ˆ๋น„๋ฅผ ํ”๋“ค๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๊ณ (์ €๋Š” xfce linux, fwiw๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค) ๋•Œ๋•Œ๋กœ ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ์ผ์น˜ํ•˜์ง€๋งŒ, ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์ด ์ธ๊ณผ ๊ด€๊ณ„๋ณด๋‹ค ์šฐ์—ฐ์˜ ์ผ์น˜์— ๊ฐ€๊น๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก : ๋Š๋ฆฐ ๋‹ค์šด๋กœ๋“œ์™€ ๊ฒ‰๋ณด๊ธฐ์— "๋ฉˆ์ถค" ์ง„ํ–‰ ์ƒํ™ฉ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ ๋ชจ๋“  ์ง•ํ›„๋Š” ์„œ๋ฒ„ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐ์„œ ๊ธฐ์ธํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ„ฐ๋ฏธ๋„ ๋„ˆ๋น„๋Š” ์ด๊ฒƒ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์ด์— ๋”ฐ๋ผ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ ˆ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@njmyers ๊ฐ€ https://github.com/gatsbyjs/gatsby/issues/6654#issuecomment -438667221์— ๊ฒŒ์‹œํ•œ ๋ ˆํ”„๋กœ ๋Š” ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@bradydowling ์ด https://github.com/gatsbyjs/gatsby/issues/6654#issuecomment -562607399์— ๊ฒŒ์‹œํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์—๋Š”

@ Fetch http://topazandsapphire.com/wp-json/wp/v2/media?per_page=100&page=7: 25025.257ms
@ Fetch http://topazandsapphire.com/wp-json/wp/v2/media?per_page=100&page=4: 27791.269ms
@ Fetch http://topazandsapphire.com/wp-json/wp/v2/media?per_page=100&page=2: 37817.874ms
@ Fetch http://topazandsapphire.com/wp-json/wp/v2/media?per_page=100&page=5: 38056.989ms
@ Fetch http://topazandsapphire.com/wp-json/wp/v2/media?per_page=100&page=3: 38446.504ms
@ Fetch http://topazandsapphire.com/wp-json/wp/v2/media?per_page=100&page=6: 43799.842ms

์ด ์†Œ์‹ฑ ๋‹จ๊ณ„๋Š” ์Šคํ”ผ๋„ˆ์™€ ๋•Œ๋•Œ๋กœ ๋‹จ๊ณ„๊ฐ€ ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ง„ํ–‰ ํ‘œ์‹œ๊ธฐ๋ฅผ ์‹ค์ œ๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ฉฐ ์—ฌ์ „ํžˆ ๋ช‡ ๋ถ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ์†Œํ•œ ์ผ์ข…์˜ ์ง„ํ–‰ ํ‘œ์‹œ๊ธฐ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ‰๊ท  ์‹œ๊ฐ„์„ ์ง€์ ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ๋กœ ์™•๋ณต ์—ฌํ–‰์œผ๋กœ ์ธํ•ด "Gatsby"๊ฐ€ ๋Š๋ฆฐ ์ด์œ ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ๋Š” 589๊ฐœ์˜ ์›๊ฒฉ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐ์—๋„ ์•ฝ 5๋ถ„์ด ๊ฑธ๋ ธ์œผ๋ฉฐ ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ์ค„์ด ๋šœ๋ ทํ•œ ์ด์œ  ์—†์ด ๋ฉˆ์ถ”๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ›„ ํŒŒ์ผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

@pvdz ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ค์‹œ ํ”Œ๋ ˆ์ดํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ž ์‹œ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋˜๋”๋ผ๋„ ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํŠน์ • ํŒŒ์ผ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒŒ์‹œ๋ฌผ์„ ์š”์•ฝํ•˜์ž๋ฉด ํŠน์ •(๋‹ค์šด๋กœ๋“œ) ๋‹จ๊ณ„๊ฐ€ ์ •๋ง ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋” ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

@bradydowling ๊ธ€์Ž„์š”, ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. :)

FTR: ์ž์› ์ˆ˜์ง‘์„ ์กฐ๊ธˆ ์ถ”์ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ด๋ฐ์— ์•ฝ๊ฐ„์˜ ๋น›์„ ๋น„์ถ”๊ธฐ ์œ„ํ•ด;

Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6084.jpg: 15605.630ms
Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6036.jpg
Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6051.jpg: 6447.272ms
Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6034.jpg
Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6045.jpg: 6944.355ms
Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6029.jpg
Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6036.jpg: 6401.541ms
Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/01/IMG_6027.jpg

์ด๊ฒƒ๋“ค์€ 6MB ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” 250Mbs ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ 1mbs๋ณด๋‹ค ๋น ๋ฅธ ๊ฒƒ์€ ์ž˜ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ๋‹ค์šด๋กœ๋“œ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. cli ํฌ๊ธฐ ์กฐ์ •์„ ์•„๋ฌด๋ฆฌ ๋งŽ์ด ํ•ด๋„ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ;)

ํฅ๋ฏธ๋กœ์šด. ์ด๊ฒƒ์€ EC2์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ํ‘œ์ค€ WordPress ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์ด๋ฏ€๋กœ ๊ฑฐ๋Œ€ํ•œ ์„ค์น˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์š”์ฒญ์ด ํ˜ธ์ŠคํŠธ์— ๊ณผ๋ถ€ํ•˜๋ฅผ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ์ €๋Š” WordPress ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” REST API ํ˜ธ์ถœ์— ์ผ์ข…์˜ ํ‘œ์ค€ WP ์†๋„ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋˜ํ•œ ์ด ๋™์ž‘์ด ์ด ์‚ฌ์ดํŠธ์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฐ€์ •ํ•˜์— ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์ด๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์š”์ฒญ์ด ํ˜ธ์ŠคํŠธ์— ๊ณผ๋ถ€ํ•˜๋ฅผ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ์ถ”์ธก(๋˜๋Š” ์ด ์•ผ๊ตฌ์žฅ์— ์žˆ๋Š” ๊ฒƒ)์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฒด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์•ฝ๊ฐ„ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜ wgets/curls๋กœ ๋ณด๊ณ ๋œ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ๋ชจ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๋ฉด ๊ฑฐ๊ธฐ์— ๋งŽ์€ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์˜์‹ฌ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ fwiw got.stream() ๋น„ํŠธ๋ฅผ ๋ฉ์ฒญํ•œ ์›์‹œ ๋‹ค์šด๋กœ๋”๋กœ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค.

    let r = ""
    require("http").get(url, res =>
      res
        .on("data", m => (r += m))
        .on("end", () => {
          console.timeEnd("$$ Fetch time for " + url)
          resolve(r)
        })
    )
$ Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/05/IMG_5260.jpg
$$ Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/09/TRAVEL-LEISURE-2-copy.png: 1003.535ms
$ Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/05/International-Travel-Topaz-Sapphire.png
$$ Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/09/IMG_4606.jpg: 3174.126ms
$ Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/05/Brunch-Topaz-Sapphire-2.png
$$ Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/09/IMG_4647.jpg: 9521.157ms
$ Started actually fetching http://topazandsapphire.com/wp-content/uploads/2016/05/IMG_6978.jpg
$$ Fetch time for http://topazandsapphire.com/wp-content/uploads/2016/05/International-Travel-Topaz-Sapphire.png: 3611.910ms

์˜ˆ, ๊ธด ์ง€์—ฐ(์ ์–ด๋„ ์ด ๊ฒฝ์šฐ์—๋Š”)์ด ๋‹ค์šด๋กœ๋“œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋งˆ๋„ ์šฐ๋ฆฌ์˜ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์€ ๋‹ค์šด๋กœ๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ํ”ผ๋“œ๋ฐฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ ์กฐ์ •(์ด์ƒํ•œ ์ด์œ ๊ฐ€ ๋ฌด์—‡์ด๋“ )์ด '์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ'์— ๊ฐ‡ํžŒ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์Šฌํ”„๊ฒŒ๋„ WSL์„ ์‚ฌ์šฉํ•  ๋•Œ ์ด๊ฒƒ์€ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋ฐ ๊ฐœ๋ฐœ์—์„œ ๋กœ์ปฌ๋กœ '์†Œ์Šค ๋ฐ ๋ณ€ํ™˜ ๋…ธ๋“œ'๊ฐ€ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. Netlify ๋นŒ๋“œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋กœ์ปฌ ๊ฐœ๋ฐœ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

@Vacilando ์†Œ์‹ฑ ์ค‘์— ์‚ฌ์ดํŠธ์— ๋‹ค์šด๋กœ๋“œ๋˜๋Š” ์ผ๋ถ€ ๋งํฌ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋น ๋ฅธ์ง€ ์ˆ˜๋™์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋‚ด๊ฐ€ ๋ณด๊ณ  ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ํฐ ๋ฌธ์ œ๋Š” ํŠน์ • wp ํ˜ธ์ŠคํŠธ๊ฐ€ ๋‹จ์ˆœํžˆ ์—„์ฒญ๋‚˜๊ฒŒ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋Š๋ฆฌ๊ณ  ๋‹ค์šด๋กœ๋“œํ•  ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ด ๋‹จ๊ณ„์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์˜ ์ „๋ถ€์ด๋ฏ€๋กœ ์ด ๋‹จ๊ณ„์— ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š” :)

์ „์ฒด ๋‹จ๊ณ„์˜ ์ผ๋ถ€๋งŒ ์ฝ˜ํ…์ธ  ์ž์ฒด๊ฐ€ ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์Œ์„ ํ™•์ธํ•œ ๊ฒฝ์šฐ ์—ฌ๊ธฐ๋กœ ๋‹ค์‹œ ๋™๊ทธ๋ผ๋ฏธ๋ฅผ ์น˜์‹ญ์‹œ์˜ค. ์ด ๊ฒฝ์šฐ repro๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค :)

์•„๋งˆ๋„ ์ด์ƒ์ ์ธ ์„ธ๊ณ„์—์„œ๋Š” ์บ์‹œํ•  ํ”Œ๋ž˜๊ทธ๋ฅผ gatsby์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ์‚ฌ์ดํŠธ ์ž์‚ฐ ๋‹ค์šด๋กœ๋“œ.

๋˜ ๋‹ค๋ฅธ ์ตœ์ ์˜ ์†”๋ฃจ์…˜์€ ์ผ์ข…์˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ž์‚ฐ ๋‹ค์šด๋กœ๋“œ ์‹œ ์†๋„ ์ œํ•œ ๋˜๋Š” ์Šค๋กœํ‹€๋ง์„ ํ†ตํ•ด ์ค‘๋‹จ๋˜์ง€ ์•Š์Œ
์ฃผ์ธ.

์ด ๋‘ ๊ฐ€์ง€ ์•„์ด๋””์–ด์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

2019๋…„ 12์›” 19์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 6:09 Peter van der Zee [email protected]
์ผ๋‹ค:

@Vacilando https://github.com/Vacilando ์ผ๋ถ€ ๋งํฌ๋ฅผ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์†Œ์‹ฑ ๋ฐ ํ…Œ์ŠคํŠธ ์ค‘์— ์‚ฌ์ดํŠธ์— ๋Œ€ํ•ด ์ˆ˜๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ์ค‘์ž…๋‹ˆ๋‹ค.
๊ทธ๋“ค์ด ๋นจ๋ฆฌ ๋‹ค์šด๋กœ๋“œํ•˜๋Š”์ง€ ์—ฌ๋ถ€? ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํ•œ ๊ฐ€์ง€ ํฐ ๋ฌธ์ œ๋Š”
ํŠน์ • wp ํ˜ธ์ŠคํŠธ๊ฐ€ ๋‹จ์ˆœํžˆ ์—„์ฒญ๋‚˜๊ฒŒ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋Š๋ฆฌ๊ณ  ๋‹ค์šด๋กœ๋“œํ•  ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ๋‹ค๋ฉด ์˜ˆ
์ด ๋‹จ๊ณ„๋Š” ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์ด๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
์ด ๋‹จ๊ณ„; ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š” :)

์ฝ˜ํ…์ธ  ์ž์ฒด๊ฐ€
์—ฌ๊ธฐ๋กœ ๋‹ค์‹œ ์›์„ ๊ทธ๋ฆฌ์‹ญ์‹œ์˜ค. ์ด ๊ฒฝ์šฐ ์žฌํ˜„์€
์—„์ฒญ๋‚˜๊ฒŒ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค :)

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/gatsbyjs/gatsby/issues/6654?email_source=notifications&email_token=ABS4AU62367MTEWP7LJXWTLQZP5L5A5CNFSM4FLHT3T2YY3PNVWWK3TUL52HS4DFWEXG43VMV
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/ABS4AU7GCV4YMZQH6R37BSDQZP5L5ANCNFSM4FLHT3TQ
.

@bradydowling ๋ถ€๋ถ„์€ ์ด๋ฏธ ์‹ค์ œ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ GATSBY_CONCURRENT_DOWNLOAD ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋™์‹œ ์š”์ฒญ์— ๋Œ€ํ•œ ์ œํ•œ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. gatsby-source-wordpress https://github.com/gatsbyjs/gatsby/issues/19292 ์˜ ๋‹ค์Œ ์ฃผ์š” ๋ฒ„์ „์€ ๋ฏธ๋””์–ด ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ•์„ ๋” ์ž˜ ์ œ์–ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์บ์‹ฑ์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ๋‹ค์šด๋กœ๋“œ๋œ ํŒŒ์ผ์ด ์บ์‹ฑ๋˜์–ด ์žˆ์ง€๋งŒ gatsby-*.js ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ํ˜„์žฌ ์บ์‰ฌ๋ฅผ ์ง€์›Œ์„œ stale ์บ์‰ฌ๋กœ ์ธํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ gatsby-source-wordpress ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ  ํ•ต์‹ฌ ๋ฌธ์ œ์ด์ง€๋งŒ Gatsby์˜ ์บ์‹œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ํ•ญ์ƒ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ€๋ถ„์ ์œผ๋กœ Jobs Api(#19831)๊ฐ€ ์ด ์บ์‹ฑ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ƒ๋‹จ์— GATSBY_CONCURRENT_DOWNLOAD ๊ฐ€๊นŒ์ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์œผ๋กœ๋Š” ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋‚ด ์ œ์•ˆ์€ mb/s/m/h ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ณด๋‹ค ์„ธ๋ถ„ํ™”๋œ ์ œ์–ด๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋ง๋„ ์•ˆ๋˜๋Š” ์†Œ๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

@bradydowling ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ ์žฌ์‹œ๋„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ดˆ๋‹น ์ตœ๋Œ€ ์š”์ฒญ์— ๋Œ€ํ•œ ์„ ํƒ์  ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํžˆ์•ผ!

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

๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ˜„์žฌ 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ ์ดํ›„๋กœ ์ตœ์†Œ 20์ผ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ๊ณ„์† ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ํšŒ์‹ ํ•ด ์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ๊ณต๊ฐœํ•˜๊ธฐ ์œ„ํ•ด "not stale" ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค!
์นœ์ ˆํ•œ ์•Œ๋ฆผ์œผ๋กœ ์ด ๋ฌธ์ œ ๋˜๋Š” ํ•ด๊ฒฐ๋œ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ์—ฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. PR ์‹œ์ž‘, ๋ฌธ์ œ ๋ถ„๋ฅ˜ ๋ฐ ๊ธฐ์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gatsby.dev/contribute ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค!

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

๋‚˜๋Š” ์ง€๊ธˆ ์ด๊ฒƒ์„ ๋‹ซ์„ ๊ฒƒ์ด๋‹ค.

์›Œ๋“œํ”„๋ ˆ์Šค ์†Œ์‹ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜์‹œ๋ฉด ๋จผ์ € ์›Œ๋“œํ”„๋ ˆ์Šค ์„œ๋ฒ„๊ฐ€ ๋Š๋ ค์„œ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ _new_ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค(๋‹จ, ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์–ธ๊ธ‰ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค).

๋Œ“๊ธ€ ์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ํ† ๋ก ์„ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด๋ฉด ํŠน์ • ๋ฌธ์ œ๊ฐ€ ๋‹ต์„ ์–ป์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋” ๋†’์•„์ง‘๋‹ˆ๋‹ค.

๋‚˜์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ง€๋‚œ 1๋…„ ๋ฐ˜ ๋™์•ˆ ๊ทธ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. ๋‚ด ์›๋ž˜ ๋ฌธ์ œ๋Š” ์ž˜ ์กฐ์ •๋œ vps์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. @njmyers ๋Š” ์ˆ˜์ • ๋˜๋Š” ์ตœ์†Œํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ์—ˆ์ง€๋งŒ ์œ ์ง€ ๊ด€๋ฆฌ์ž๋กœ๋ถ€ํ„ฐ ์›ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์–ป์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚˜ ์ž์‹ ์„ ๋‹ซ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์ ๋‹นํžˆ ํฐ WordPress ์‚ฌ์ดํŠธ๋Š” ์•„์ง gatsby์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒฝ๊ณ ๋กœ ๊ฑฐ๊ธฐ์— ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@dustinhorton ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” 1๋…„ ๋ฐ˜์ด ๋„˜์—ˆ์œผ๋ฉฐ ์ƒํ™ฉ์ด ๋น ๋ฅด๊ฒŒ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋งŒํผ ๋งŽ์€ ๋Œ“๊ธ€์ด ๋‹ฌ๋ฆฐ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋” ์ด์ƒ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

image

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Fwiw๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ๋ณด๊ณ  ๋œ ์žฌํ˜„์„ ํ™•์ธํ•˜๊ณ  ์ตœ์†Œํ•œ ๋Š๋ฆฐ ์›๊ฒฉ์œผ๋กœ ์ธํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ๋ฆฌ๋ชจ์ปจ์— ํ˜„์žฌ Gatsby ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ์žฌํ˜„์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์Šค๋ ˆ๋“œ์— ์ด๋ฏธ ๊ฒŒ์‹œ๋˜์–ด ์žˆ๋”๋ผ๋„ ์•Œ๋ ค์ฃผ์„ธ์š”. ๋˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด๊ณ (๋‚˜์—๊ฒŒ ํƒœ๊ทธ๋ฅผ ์ง€์ •) ๋” ์ง‘์ค‘ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹น์‹ ์—๊ฒŒ ๋งก๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค. :)

(_๋ถ„๋ช…ํžˆ ํ•˜์ž๋ฉด, ๋„ˆ๋ฌด ๋งŽ์€ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚œ ๋ฉ”์‹œ์ง€๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ์กฐ๊ธˆ ์ง„๋ถ€ํ•ด์ ธ์„œ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ† ๋ก ์„ ๋ถ€์ˆ˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๋Š” ์˜๋„๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์šฐ๋ฆฌ ์ž‘์—…์ด ์—ฌ๊ธฐ์„œ ๋๋‚˜์ง€ ์•Š์•˜์Œ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. !_)

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