Gatsby: рдХреНрдпрд╛ рдЧрддрд┐рд╢реАрд▓ рдХреЛ img рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЬреБрд▓ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: gatsbyjs/gatsby

рд╣реИрд▓реЛ, рдореИрдВ рдПрдХ рдмреНрд▓реЙрдЧ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкреЛрд╕реНрдЯ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдкреЛрд╕реНрдЯ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдПрдХ рдХрд╡рд░ рд╣реЛрддрд╛ рд╣реИред
рдиреАрдЪреЗ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:

 {posts.map(post => {
            return <li key={post.node.fields.slug}>
              <Link to={post.node.fields.slug}>
                <img className="news-img" src={require(`../${post.node.frontmatter.cover.relativePath}`)} />
                <h3 className="news-titles">{post.node.frontmatter.title}</h3>
                <p className="news-desc">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{post.node.excerpt}</p>
              </Link>
            </li>
          }
          )}

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реА:

 warning  in ./src/pages/md/new4/new4.md

Module parse failed: /Users/magicly/development/blog/gatsby-starter-blog/src/pages/md/new4/new4.md Assigning to rvalue (1:2)
You may need an appropriate loader to handle this file type.
SyntaxError: Assigning to rvalue (1:2)
    at Parser.pp$4.raise (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:2221:15)
    at Parser.pp$2.checkLVal (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:1509:12)
    at Parser.pp$3.parseMaybeUnary (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:1685:24)
    at Parser.pp$3.parseExprOps (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:1637:21)
    at Parser.pp$3.parseMaybeConditional (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:1620:21)
    at Parser.pp$3.parseMaybeAssign (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:1597:21)
    at Parser.pp$3.parseExpression (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:1573:21)
    at Parser.pp$1.parseStatement (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:727:47)
    at Parser.pp$1.parseTopLevel (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:638:25)
    at Parser.parse (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:516:17)
    at Object.parse (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/acorn/dist/acorn.js:3098:39)
    at Parser.parse (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/webpack/lib/Parser.js:902:15)
    at NormalModule.<anonymous> (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/webpack/lib/NormalModule.js:104:16)
    at NormalModule.onModuleBuild (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:310:10)
    at nextLoader (/Users/magicly/development/blog/gatsby-starter-blog/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:275:25)
    at /Users/magicly/development/blog/gatsby-starter-blog/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5

 @ ./src/pages ^\.\/.*$

рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкреГрд╖реНрда рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдкреЗрдЬ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдФрд░ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ:

Uncaught TypeError: Cannot read property 'call' of undefined
    at t (bootstrap 29073caтАж:52)
    at Object../src/components/Footer/footer.css (footer.css:1)
    at t (bootstrap 29073caтАж:52)
    at Object.<anonymous> (index.jsx:5)
    at Object../src/components/Footer/index.jsx (layout-component---index-adc8f24тАж.js:153)
    at t (bootstrap 29073caтАж:52)
    at Object.<anonymous> (index.jsx:3)
    at Object../node_modules/babel-loader/lib/index.js?{"plugins":["/Users/magicly/development/blog/gatsby-starter-blog/node_modules/gatsby/dist/utils/babel-plugin-extract-graphql.js","add-module-exports","add-module-exports","add-module-exports","transform-object-assign",["transform-react-jsx",{"pragma":"Glamor.createElement"}],"babel-plugin-glamor"],"presets":["/Users/magicly/development/blog/gatsby-starter-blog/node_modules/babel-preset-react/lib/index.js","/Users/magicly/development/blog/gatsby-starter-blog/node_modules/babel-preset-es2015/lib/index.js","/Users/magicly/development/blog/gatsby-starter-blog/node_modules/babel-preset-stage-1/lib/index.js","/Users/magicly/development/blog/gatsby-starter-blog/node_modules/babel-preset-env/lib/index.js","/Users/magicly/development/blog/gatsby-starter-blog/node_modules/babel-preset-stage-0/lib/index.js","/Users/magicly/development/blog/gatsby-starter-blog/node_modules/babel-preset-react/lib/index.js"],"cacheDirectory":true}!./src/layouts/index.jsx (layout-component---index-adc8f24тАж.js:757)
    at t (bootstrap 29073caтАж:52)
    at index.jsx?8a0a:11

рдлрд┐рд░ рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рдЗрд╕рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ:

 {posts.map(post => {
            const path = `../${post.node.frontmatter.cover.relativePath}`;
            return <li key={post.node.fields.slug}>
              <Link to={post.node.fields.slug}>
                <img className="news-img" src={require(path)} />
                <h3 className="news-titles">{post.node.frontmatter.title}</h3>
                <p className="news-desc">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{post.node.excerpt}</p>
              </Link>
            </li>
          }
          )}

рдФрд░ рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реА,
``` рдЪреЗрддрд╛рд╡рдиреА 1 рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд 10:31:08

./src/pages/news/index.jsx . рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд░реНрднрд░рддрд╛рдПрдБ:
103:74-87 рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ

@ ./src/pages/news/index.jsx 103:74-87

and the error on web page:

рддреНрд░реБрдЯрд┐: рдореЙрдбреНрдпреВрд▓ '../md/new4/cover4.png' рдирд╣реАрдВ рдЦреЛрдЬрд╛ рдЬрд╛ рд╕рдХрд╛ред
http://localhost :8000/commons.js:55706:42
webpackContextResolve (рд╡реЗрдмрдкреИрдХ:/src/pages/news
^./. $:11webpackContext (рд╡реЗрдмрдкреИрдХ:/src/рдкреЗрдЬ/рд╕рдорд╛рдЪрд╛рд░^./. $:8
http://localhost :8000/commons.js:7945:98
Array.map
(рдореВрд▓ рдирд┐рд╡рд╛рд╕реА)
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛.рд░реЗрдВрдбрд░
рд╡реЗрдмрдкреИрдХ:///src/pages/news/index. рдЬреЗрдПрд╕рдПрдХреНрд╕:21
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛.рд░реЗрдВрдбрд░
webpack:///~/react-proxy/modules/createPrototypeProxy.js:44
http://localhost :8000/commons.js:30838:22
рдЙрдкрд╛рдпрдЬреАрд╡рдирдЪрдХреНрд░Perf
рд╡реЗрдмрдкреИрдХ: ///~/react-dom/lib/ReactCompositeComponent.js:75
ReactCompositeComponentWrapper._renderValidatedComponentWithOwnerOrContext
рд╡реЗрдмрдкреИрдХ: ///~/react-dom/lib/ReactCompositeComponent.js:794

I am sure the path  '../md/new4/cover4.png' is right, because if I change code to:

{рдкреЛрд╕реНрдЯ.рдореИрдк (рдкреЛрд╕реНрдЯ => {
рд╡рд╛рдкрд╕реА


  • {post.node.frontmatter.title}


    {рдкреЛрд╕реНрдЯ.рдиреЛрдб.рдЕрдВрд╢}




    }
    )}
    ```
    рддрдм рд╕рдм рдареАрдХ рд╣реИред рдореЗрд░рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╣реИ:
    рдиреЛрдб: v8.1.2
    рдПрдирдкреАрдПрдо: v5.0.3
    рдЧреИрдЯреНрд╕рдмреА: 1.2.0
    рдУрдПрд╕рдПрдХреНрд╕ 10.11.5

    рдзрдиреНрдпрд╡рд╛рдж~

  • рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

    рдореИрдВ рдЧреВрдЧрд▓

    the request of a dependency is an expression
    

    рдФрд░ рдЕрдВрдд рдореЗрдВ рдпрд╣ https://webpack.github.io/docs/context.html рдкрд╛рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж

     {posts.map(post => {
                let path = `${post.node.frontmatter.cover.relativePath}`;
                path = path.slice(0, path.lastIndexOf('.'))
                return <li key={post.node.fields.slug}>
                  <Link to={post.node.fields.slug}>
                    <img className="news-img" src={require('../' + path + '.png')} />
                    <h3 className="news-titles">{post.node.frontmatter.title}</h3>
                    <p className="news-desc">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{post.node.excerpt}</p>
                  </Link>
                </li>
              }
              )}
    

    рдФрд░ рдЕрдм рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

    рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

    рдореИрдВ рдЧреВрдЧрд▓

    the request of a dependency is an expression
    

    рдФрд░ рдЕрдВрдд рдореЗрдВ рдпрд╣ https://webpack.github.io/docs/context.html рдкрд╛рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж

     {posts.map(post => {
                let path = `${post.node.frontmatter.cover.relativePath}`;
                path = path.slice(0, path.lastIndexOf('.'))
                return <li key={post.node.fields.slug}>
                  <Link to={post.node.fields.slug}>
                    <img className="news-img" src={require('../' + path + '.png')} />
                    <h3 className="news-titles">{post.node.frontmatter.title}</h3>
                    <p className="news-desc">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{post.node.excerpt}</p>
                  </Link>
                </li>
              }
              )}
    

    рдФрд░ рдЕрдм рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

    рдзрдиреНрдпрд╡рд╛рдж @ рдореИрдЬрд┐рдХрд▓реА рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рдореИрдВ Gatsbyv 0.x рд╕реЗ v1.x рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдЙрд▓рдЭрд╛ рджрд┐рдпрд╛ред рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИ, рдореИрдВ рд╡рд╣реА рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЧрддрд┐рд╢реАрд▓ рд╣реЛред

    рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдФрд░ @ рдореИрдЬрд┐рдХрд▓реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪреАрдЬреЛрдВ рдХреЗ рд░реВрдк рд╕реЗ, рд╣рдо рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╡рд░ рдЫрд╡рд┐ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рд░реНрдХрдбрд╛рдЙрди рдлреНрд░рдВрдЯрдореИрдЯрд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдорд╛рд░реНрдЧ рд╣реИред рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреЛ Gatsby рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдмреНрд▓реЙрдЧ рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢рд╛рдпрдж рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдЧрд╛:

    ---
    title: The title of the post
    featured_image: ./teaser.jpg
    ---
    

    рдлрд┐рд░ рдЖрдкрдХреЗ рд╕рднреА рд▓реЗрдЦреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдкрд░ рдЖрдкрдХреЗ рдЧреНрд░рд╛рдлрд╝рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ, рдЖрдк featured_image (рдЬрд┐рд╕реЗ @magicly рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛ cover ) рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

    frontmatter {
      title
      featured_image {
        name
        ext
        relativePath
      }
    }
    

    рдЕрдм рдЖрдк рд╢рд╛рдпрдж рд╕рднреА рдкрджреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╢реАрд░реНрд╖рдХ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реБрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЫрд╡рд┐ рдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░, рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    // тАж
    
    // Create a new require context for Webpack
    const requireFeatureImage = require.context(
      `./../pages/portfolio/`, // DonтАЩt make this a variable
      true, // Whether or not to check subdirectories
      /^.*\.(svg|png|gif|jpg|jpeg|webp|)$/ // Rough regex for extensions, maybe change this for your use case?
    )
    
    return (
      <ol>
        {pages.map(function(page, i) {
          let path = page.node.frontmatter.featured_image.relativePath
          let imgPath = `./${path.split('portfolio/')[1]}`
    
          return (
            <li key={`Item_${page.node.fields.slug}`}>
              <Link to={page.node.fields.slug}>
                <img src={requireFeatureImage(imgPath)} />
                <h2>
                  {page.node.frontmatter.title}
                </h2>
              </Link>
            </li>
          )
        })}
      </ol>
    )
    

    рд╡реЗрдмрдкреИрдХ 2 рдХреЗ рд╕рд╛рде require.context рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рднрд▓реЗ рд╣реА, рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЧреИрдЯреНрд╕рдмреА рдореБрджреНрджрд╛ рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ)ред

    @KyleAMathews рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдореБрдЭреЗ рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг/рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдпрд╛рдж рдХрд┐рдпрд╛? рдзрдиреНрдпрд╡рд╛рдж!

    рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рднрд╛рдЧ 5 рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмреАрдЪ, www рдФрд░ gatsbygram рдЪреЗрдХрдЖрдЙрдЯ рдХрд░реЗрдВ рдЬреИрд╕реЗ https://github.com/gatsbyjs/gatsby/blob/66e86d4b45dad70bfcf78861002e0108863f7985/www/src/pages/index.js#L209

    рдпрджрд┐ рдЖрдк https://www.gatsbyjs.org/packages/gatsby-transformer-sharp/ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдлреНрд░рдВрдЯрдореИрдЯрд░ рдореЗрдВ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдЫрд╡рд┐рдпрд╛рдВ рдлрд┐рд░ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддреА рд╣реИрдВред

    рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
    0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

    рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

    jaanhio picture jaanhio  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

    dustinhorton picture dustinhorton  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

    andykais picture andykais  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

    benstr picture benstr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

    Oppenheimer1 picture Oppenheimer1  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ