Gatsby: рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдорд╛рд░реНрдЪ 2018  ┬╖  69рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: gatsbyjs/gatsby

рд╡рд┐рд╡рд░рдг

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рд░реНрд╡рд░ рдХреБрдЫ рдХрд╕реНрдЯрдо рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рддрдм рддрдХ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдЦрддреНрдо рди рд╣реЛ рдЬрд╛рдП рдФрд░ рдкреГрд╖реНрда рдХреЛ 404 рд╕реЗ рдмрджрд▓ рджреЗ рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ url рдХреЛ рдорд╛рдиреНрдпрддрд╛ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИред

рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдерд╛ рдХрд┐ рд╢рд╛рдпрдж matchPath рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдпреВрдЖрд░рдПрд▓ рдкреИрдЯрд░реНрди рдЬреЛ рдЗрди рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛, рдФрд░ рдпреВрдЖрд░рдПрд▓ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдкреГрд╖реНрда рд╣реИ, рдореЗрдВ рдХреБрдЫ рдУрд╡рд░рд▓реИрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реМрдЯрд╛ рд╣реБрдЖред

рдореИрдВ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╣реБрдХ -рдкреЗрдЬ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред

рд╡рд╛рддрд╛рд╡рд░рдг

рдЧреИрдЯреНрд╕рдмреА рд╕рдВрд╕реНрдХрд░рдг: 1.9.221
Node.js рд╕рдВрд╕реНрдХрд░рдг: 8.9.1
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо: macOS

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреГрд╖реНрда рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рддрдм рддрдХ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ url рдЕрдЬреНрдЮрд╛рдд рд╣реИ, рдФрд░ 404 рдкреГрд╖реНрда рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рд╕рд░реНрд╡рд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреГрд╖реНрда рдХрд╕реНрдЯрдо url рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ 404 рдкреГрд╖реНрда рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

1. git clone https://github.com/TuckerWhitehouse/gatsby-client-routing-issue

2. npm install

3. npm run build

4. npm start

5. open http://localhost:3000

awaiting author response question or discussion

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

рдпрд╣ рдзрд╛рдЧрд╛ рдХрд┐рддрдирд╛ рд╕рдХреНрд░рд┐рдп рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЧреИрд░-рддреБрдЪреНрдЫ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рдореИрдВ рдПрдХ рд╕реНрдерд┐рд░_рдкреГрд╖реНрда_ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ - ( рдХрд┐рдпрд╛! ) рдЧреИрдЯреНрд╕рдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд╕реНрдерд┐рд░ _site_ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ - рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЧреИрдЯреНрд╕рдмреА "рдкреЗрдЬ" рдПрдХ рдпреБрдХреНрдд рдкреЗрдЬ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ URL рдмрд╛рд╣рд░ рд╣реИ рдореЗрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрди, рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ Gatsby рдЖрд╡реЗрджрди _ever_ URL рдХреЗ рд╕рд╛рде рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, Gatsby _mostly_ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдзрд╛рд░рдгрд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИ - рдлрд┐рд░ рд╕реЗ, рдЗрд╕рдХреЗ рдорд╛рдирдХ рд╕реНрдереИрддрд┐рдХ _site_ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рд╡рдЬрд╣ рд╕реЗ - рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЬреИрд╕реЗ рд╣реИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдКрдкрд░ред

рддреЛ, рдХреНрдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдмрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЙрдореНрдореАрдж рд╣реИ? рдореБрдЭреЗ рдПрдХ рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХрд┐рди рд░рд╛рд╕реНрддреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдпрд╣ рдХрдо рд╣реИ рдХрд┐ рдореБрдЭреЗ рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдореИрдВ рдПрдХ рд░реЗрдЧреАрдХреНрд╕ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЙрдирд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛) рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдУрд╡рд░рд▓реИрдкред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЗрдЯрдЕрдк рдПрдХ рдЕрдкрд╛рдЪреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдкреАрдЫреЗ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рд░рд┐рд╡рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЧреИрдЯреНрд╕рдмреА рд╕рд╛рдЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдЙрди рдРрдкреНрд╕ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЧреИрдЯреНрд╕рдмреА рд╕рд╛рдЗрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдордп, рдпрджрд┐ app1 рдЕрдиреБрдкрд▓рдмреНрдз рдпрд╛ рджреБрд░реНрд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ / app1 рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз /error/unavailable.html рдпрд╛ /error/internal.html рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓реМрдЯрд╛ рджреЗрдЧрд╛, рдФрд░ app2 рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╣реЛрдЧрд╛ред ред

matchPath рдЬреИрд╕реЗ /^(app1|app2)/.*/ , рджреЛрдиреЛрдВ рдЕрдиреБрдкрд▓рдмреНрдз рдПрдХ рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ findPage рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ (url рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдЬреЛ рдкреГрд╖реНрда рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд░рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдореИрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдФрд░ "рдкреИрдЪрд┐рдВрдЧ" ___history рдФрд░ ___loader onClientEntry рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдкрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдпрд╣ рдЙрди рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреИрдЯреНрд╕рдмреА рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдирд╛рдЬреБрдХ рд╣реИ - рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдФрд░ рдЧреИрдЯреНрд╕рдмреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИред

// gatsby-browser.js
exports.onClientEntry = () => {
  // Check for a custom pathname
  const pathname = global.___pathname
  if (!pathname) return

  // Override the history location
  const history = global.___history
  history.location.pathname = pathname

  // Patch the resource loader
  const loader = global.___loader
  const { getResourcesForPathname } = loader

  loader.getResourcesForPathname = (path, ...args) => {
    return getResourcesForPathname(path === location.pathname ? pathname : path, ...args)
  }
}
// src/pages/page1.js
import React from "react"
import Helmet from 'react-helmet'

export default () => (
  <div>
    <Helmet>
      <script>{`window.___pathname = '/page1'`}</script>
    </Helmet>
    <div>Page 1!</div>
  </div>
)

рдореИрдВ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рд▓реНрдб рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдкрд░рдВрдкрд░рд╛рдЧрдд рд╕реЗрдЯрдЕрдк рднреА рд╣реИ рдФрд░ рд╣рдо рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рд╣рдо рдПрдХ рдкреВрд░реНрдг рдЧреИрдЯреНрд╕рдмреА рд╕рд╛рдЗрдЯ рдкрд░ рдЕрдкрдирд╛ рдкреНрд░рд╡рд╛рд╕ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЭрдВрдбрд╛ рдПрдХрджрдо рд╕рд╣реА рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЦрдпрд╛рд▓ рд╣реИ? рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

рд╣рдордиреЗ рдЙрд╕ рдкрде рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЬреЛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд╣рдордиреЗ рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде addPagesArray рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдХрд╣рд╛ рд╣реИред

рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рд╣реИ? рдкреГрд╖реНрда рдареАрдХ рд▓реЛрдб рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрдм рдпрд╣ рдкрде рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реЛред

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рдкреЗрдЬ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рд╣реИред рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдо рд░рдирдЯрд╛рдЗрдо рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЙрдЫрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореИрдВ рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдо рдПрдХ рд▓реИрдВрдбрд┐рдВрдЧ рдкреЗрдЬ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕рд┐рдВрдЧрд▓-рдкреЗрдЬ рдЧреИрдЯреНрд╕рдмреА рдРрдкреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рдЖрддреА рд╣реИ рдЬрдм рд╣рдо рдЗрд╕рдХреЗ рдбреЛрдореЗрди рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрда рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп Gatsby рдРрдк www.example.com ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдЧреИрдЯреНрд╕рдмреА рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрдареЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧреА рдФрд░ www.example.com/trial рдкрд░ рдЙрдирдХреА рд╕реЗрд╡рд╛ рдХрд░реЗрдЧреАред рдЗрд╕рд▓рд┐рдП рдПрдХ рд▓реИрдВрдбрд┐рдВрдЧ рдкреЗрдЬ URL www.example.com/trail/ad-123 рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдкреЗрдЬ рд╢реБрд░реВ рдореЗрдВ рдареАрдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА JS рд▓реЛрдб рдФрд░ рд░рд╛рдЙрдЯрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрда рдкрде рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреГрд╖реНрда рдХреЛ рд░реВрдЯ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ www.example.com/ad-123 рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк 404 рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ? рдХреНрдпрд╛ рдЧреИрдЯреНрд╕рдмреА рдЯреАрдо рдПрдХ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реЛрдЧрд╛?

@ рдПрд▓реЗрдХреНрд╕- greco-harrys рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкрде рдЙрдкрд╕рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдк рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ Google Adsense рдХреЛ рдареАрдХ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

Google Adsense auto ads рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рд░реНрдЧ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рддрд╛рдЬрд╝рд╛ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ рднреА рдХреНрдпрд╛ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ gatsby-link рдмрдЬрд╛рдп a рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореИрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдФрд░ "рдкреИрдЪрд┐рдВрдЧ" ___history рдФрд░ ___loader onClientEntry рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдкрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдпрд╣ рдЙрди рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреИрдЯреНрд╕рдмреА рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдирд╛рдЬреБрдХ рд╣реИ - рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдФрд░ рдЧреИрдЯреНрд╕рдмреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИред

// gatsby-browser.js
exports.onClientEntry = () => {
  // Check for a custom pathname
  const pathname = global.___pathname
  if (!pathname) return

  // Override the history location
  const history = global.___history
  history.location.pathname = pathname

  // Patch the resource loader
  const loader = global.___loader
  const { getResourcesForPathname } = loader

  loader.getResourcesForPathname = (path, ...args) => {
    return getResourcesForPathname(path === location.pathname ? pathname : path, ...args)
  }
}
// src/pages/page1.js
import React from "react"
import Helmet from 'react-helmet'

export default () => (
  <div>
    <Helmet>
      <script>{`window.___pathname = '/page1'`}</script>
    </Helmet>
    <div>Page 1!</div>
  </div>
)

@TuckerWhitehouse рдЖрдкрдХреЛ ___history , ___loader рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ? рдЬрдм рдореИрдВ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╡реЗ рджреЛ рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ undfined ред

@ рдПрд▓реЗрдХреНрд╕- greco-harrys рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкрде рдЙрдкрд╕рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдк рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@ jgierer12 рдЬреЛ рдореЗрд░реЗ рдореБрджреНрджреЗ рдХреЗ рдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдЯреБрдХрдбрд╝рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдкрде рдЕрдЬреНрдЮрд╛рдд рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдкреГрд╖реНрда рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реАрдЦрдиреЗ рдХреА рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд▓реЗрддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рджрд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП example.com/go/ рдкрде рдкрд░ рд╣рдо рдкреГрд╖реНрдареЛрдВ рдХреЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреА 1 рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдо example.com/go/first-page рдпрд╛ example.com/go/second-page рдЬреИрд╕реЗ рдкрде рдкрд░ рдкреГрд╖реНрда рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЙрди рджреЛрдиреЛрдВ рдХреЛ example.com/go/page рдкрде рдкрд░ рдкрд░реЛрд╕рд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЬреЛ рдореИрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЬреЛ рднреА рд░рд╛рд╕реНрддрд╛ рдЪрд╛рд╣рд┐рдП рдЙрд╕рдореЗрдВ рдПрдХ рдЧреИрдЯреНрд╕рдмреА рдкреЗрдЬ рдХреА рд╕реЗрд╡рд╛ рдХрд░реЗрдВред

@ рдПрд▓реЗрдХреНрд╕-рдЧреНрд░реАрдХреЛ-рд╣рд╛рд░реНрд╕ рдЙрди рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ gatsby v1 рджреНрд╡рд╛рд░рд╛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред V2 рдХреЗ рдЙрдиреНрдирдпрди рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░рд╛рдЙрдЯрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рд╕реЗ рд╕реНрд╡рд┐рдЪ-рд░рд╛рдЙрдЯрд░ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реЛрдЧрд╛ рдХрд┐ рдЙрди рдЧреНрд▓реЛрдмрд▓реНрд╕ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдП рдереЗред

рдореИрдВ рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП Gatsby рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб (рдПрдХ рд▓рд╛ @TuckerWhitehouse рдХрд╛ рдкрддрд╛ рд╣реИ) рдЬреЛ V2 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдЧрд╛?

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдЦреЛрдЬ рдкрд╛рдпрд╛ рдерд╛ рдЬреЛ _disable_ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рд╣реЛ, рдореИрдВ @ рдПрд▓реЗрдХреНрд╕-рдЧреНрд░реАрдХреЛ-рд╣реИрд░рд┐рд╕ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

window.page = window.page || {};
window.page.path = window.location.pathname;

gatsby-browser.js рдореЗрдВ рдЬреЛ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдЗрд╕ рд╕рд╢рд░реНрдд рдЙрддреНрдкрд╛рджрди-app.js рдореЗрдВ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд╢рд░реНрдд рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди "рд╡рд┐рд╣рд┐рдд рдкрде рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде рд╕реЗ рдорд┐рд▓рд╛рдиреЗ" рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо (IMO) рдХреЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рд╣реИрдВред

рдореБрдЭреЗ рднреА рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ Gatsby рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ Gatsby рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ pathPrefix рддрд╛рдХрд┐ рдореИрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрде рдХреЗ рддрд╣рдд рд╕рдм рдХреБрдЫ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреВрдВ рдФрд░ рдЙрд╕рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХреВрдВред рдЗрд╕ рддрд░рд╣, рд╕рдм рдХреБрдЫ рд╡рд╣рд╛рдБ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдПрдХ рдкреГрд╖реНрда рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд╣рд░ рд╕рдордп pathPrefix рдЕрд╡рд╛рдВрдЫрд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╣реИред рдореБрдЭреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ @ethagnawl рдиреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣рд░

рдореИрдВ рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП Gatsby рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб (рдПрдХ рд▓рд╛ @TuckerWhitehouse рдХрд╛ рдкрддрд╛ рд╣реИ) рдЬреЛ V2 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдЧрд╛?

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдЦреЛрдЬ рдкрд╛рдпрд╛ рдерд╛ рдЬреЛ _disable_ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рд╣реЛ, рдореИрдВ @ рдПрд▓реЗрдХреНрд╕-рдЧреНрд░реАрдХреЛ-рд╣реИрд░рд┐рд╕ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

window.page = window.page || {};
window.page.path = window.location.pathname;

gatsby-browser.js рдореЗрдВ рдЬреЛ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдЗрд╕ рд╕рд╢рд░реНрдд рдЙрддреНрдкрд╛рджрди-app.js рдореЗрдВ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд╢рд░реНрдд рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди "рд╡рд┐рд╣рд┐рдд рдкрде рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде рд╕реЗ рдорд┐рд▓рд╛рдиреЗ" рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо (IMO) рдХреЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рд╣реИрдВред

@ethagnawl рдореЗрд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА URL рдкрд░ рдПрдХрд▓ рдкреГрд╖реНрда рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕рд╛ рд╣рд▓ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА URL рдкрд░ рдкрд░реЛрд╕рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рджреНрд╡рд╛рд░рд╛, рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рдкреЗрдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рд░реВрдЯ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Gatsby рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ: https://github.com/gatsbyjs/gatsby/tree/master/examples/client-only-paths ред

рдЖрдк рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд▓рд╛рдЗрди 15 рдкрд░ <Page path="/*" {...props} /> рддрд░рд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд╛рдЗрди 16 рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рднреА рдкрде рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд Page рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдЧрд╛ред рд╡рд╣рд╛рдВ рд╕реЗ рдЖрдк рдЙрд╕ Page рдЬреЛ рдЪрд╛рд╣реЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдХрд┐рд╕реА рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдкрде рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдИ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдПрдХ рдРрдк рдореЗрдВ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп рдореБрдЭреЗ рдХрд┐рд╕реА рднреА URL рдкрд░ рдПрдХ рдПрдХрд▓ рдЧреИрдЯреНрд╕рдмреА рдкреЗрдЬ (рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рд▓реИрдВрдбрд┐рдВрдЧ рдкреЗрдЬ) рдХреА рд╕реЗрд╡рд╛ рдХрд░рдирд╛ рдерд╛ред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреА рдЦреЛрдЬ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ!

рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝рд┐рдВрдЧ HTML.js рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рдФрд░ {this.props.postBodyComponents} рдирд┐рдХрд╛рд▓рдХрд░ рдореИрдВ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

https://www.gatsbyjs.org/docs/custom-html/

рдпрд╣ рдзрд╛рдЧрд╛ рдХрд┐рддрдирд╛ рд╕рдХреНрд░рд┐рдп рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЧреИрд░-рддреБрдЪреНрдЫ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рдореИрдВ рдПрдХ рд╕реНрдерд┐рд░_рдкреГрд╖реНрда_ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ - ( рдХрд┐рдпрд╛! ) рдЧреИрдЯреНрд╕рдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд╕реНрдерд┐рд░ _site_ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ - рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЧреИрдЯреНрд╕рдмреА "рдкреЗрдЬ" рдПрдХ рдпреБрдХреНрдд рдкреЗрдЬ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ URL рдмрд╛рд╣рд░ рд╣реИ рдореЗрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрди, рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ Gatsby рдЖрд╡реЗрджрди _ever_ URL рдХреЗ рд╕рд╛рде рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, Gatsby _mostly_ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдзрд╛рд░рдгрд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИ - рдлрд┐рд░ рд╕реЗ, рдЗрд╕рдХреЗ рдорд╛рдирдХ рд╕реНрдереИрддрд┐рдХ _site_ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рд╡рдЬрд╣ рд╕реЗ - рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЬреИрд╕реЗ рд╣реИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдКрдкрд░ред

рддреЛ, рдХреНрдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдмрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЙрдореНрдореАрдж рд╣реИ? рдореБрдЭреЗ рдПрдХ рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ @ethagnawl рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ dangeouslySetInnerHTML рдХреА рддрд░рд╣ рдПрдХ рдмрд╣реБрдд рд▓рдВрдмреЗ рдФрд░ рдЕрдкреНрд░рд┐рдп рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рд▓реЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЪреЗрдд рд░рд╣реЗрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЦрд╛рд╕ рдмрдврд╝рдд рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкреАрдЖрд░ рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛

APR @ethagnawl рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдпрд╛рдж рджрд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ?

// Implement the Gatsby API тАЬonCreatePageтАЭ. This is
// called after every page is created.
exports.onCreatePage = ({ page, actions }) => {
  const { createPage } = actions;
  page.matchPath = `${page.path}*`;
  createPage(page);
};

@wardpeet рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╕рдорд╛рдзрд╛рди @TuckerWhitehouse рдЬреЛ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред

IMO, рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдВрд╣рд┐рддрд╛рдмрджреНрдз рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдлрд┐рд░ рд╕реЗ, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ / noop-ing / etc рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрдм Gatsby рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, matchPath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ url рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрд╕ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░ рд╕рдХреЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдм рдЯреВрдЯрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд╛рди рдкрд░ рдПрдХ gatsby рд╕рд╛рдЗрдЯ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред (рдореЗрд░рд╛ рдореВрд▓ рдореБрджреНрджрд╛ рдЕрдкрд╛рдЪреЗ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдкреАрдЫреЗ рдЧреИрдЯреНрд╕рдмреА рд╣реЛрдиреЗ рдФрд░ рдЙрди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рди рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреГрд╖реНрда рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдВрдЧреЗ)ред

@ethagnawl рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреЗрдЬ рд╕реНрддрд░ рдкрд░ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ ( page.__disable_client_side_routing__ = true рдЬреИрд╕рд╛ рдХреБрдЫ)? рдпрд╣ рд╢рд╛рдпрдж рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдЬреЛ рдореИрдВ рднреА рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рд╕реНрддрд░ рдкрд░ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдХреНрдпрд╛ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдпрд╛ рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛? рдпрджрд┐ рдпрд╣ рдмрд╛рдж рдХреА рдмрд╛рдд рд╣реИ, рддреЛ рдХреНрдпрд╛ рдкреЗрдЬ рд╕реНрддрд░ рдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдлрд╛рдпрджрд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕ рд░реЗрдкреЛ рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рд╣реИ :)
https://github.com/wardpeet/gatsby-plugin-static-site

рдЕрдирд┐рд╢реНрдЪрд┐рдд рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрднреА рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

git clone https://github.com/wardpeet/gatsby-plugin-static-site
npm install
npm run build
npm link

cd "into your project"
npm link gatsby-plugin-static-site

gatsby-plugin-static-site рдХреЛ рдЕрдкрдиреЗ gatsby-config.js рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реВрдВ: рдореБрд╕реНрдХрд╛рди:

рдореИрдВрдиреЗ рдЕрдкрдиреЗ gitignore рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рд░реЗрдкреЛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ (рдзрдиреНрдпрд╡рд╛рдж @ m-allanson)ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдирд╛рдо рдХреЗ рддрд╣рдд npm рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рднреА рдХрд┐рдпрд╛ред

рдЗрд╕рд▓рд┐рдП рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ

npm install --save @wardpeet/gatsby-plugin-static-site

рдФрд░ gatsby-config.json рдХреЛ @wardpeet/gatsby-plugin-static-site рдЬреЛрдбрд╝реЗрдВ

рдЕрдЧрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред

рд╣рдИрдпрд╛!

рдпрд╣ рдореБрджреНрджрд╛ рд╢рд╛рдВрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдбрд░рд╛рд╡рдирд╛ рд╢рд╛рдВрддред ЁЯС╗

рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореБрджреНрджреЗ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ 30 рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЕрдВрддрд┐рдо рдЕрдкрдбреЗрдЯ рдХреЗ рдХрдо рд╕реЗ рдХрдо 20 рджрд┐рди рд╣реЛ рдЧрдП рд╣реИрдВред

рдпрджрд┐ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдпрд╣рд╛рдБ рдЙрддреНрддрд░ рджреЗрдВред рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП "рдирд╣реАрдВ рдмрд╛рд╕реА" рд▓реЗрдмрд▓ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ!

рдЧреИрдЯреНрд╕рдмреА рд╕рдореБрджрд╛рдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! ЁЯТкЁЯТЬ

рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЦреБрд▓рд╛ рд░рд╣реЗ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╛рд╕реА рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА
https://github.com/gatsbyjs/gatsby/issues/4337#issuecomment -4775757540

рдЕрдЧрд░ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред

@wardpeet рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд▓рдЧрдЗрди рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИ?

@wardpeet IIRC, рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдлрд╝рд┐рдХреНрд╕ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИ (рд╢рд╛рдпрдж, рдЕрдВрддрддрдГ) рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдХ

@wardpeet рдореВрд▓ рдореБрджреНрджрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛, @ethagnawl рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд▓рд╛рдпрд╛, рдЬреЛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд▓рдЧрдЗрди рдкрддреЗ рд╣реИрдВред

рдЬрдм рдореИрдВ рдПрдХ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдкреБрд░рд╛рдиреЗ CMS рдкрд░ Gatsby рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдкреЗрдЬ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕реНрд╡рд┐рдЪ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рд░реНрдл рдЧреИрдЯреНрд╕рдмрд╛рдп рдХреЛ рд╕реМрдВрдк рджреЗрдВред

рдореИрдВрдиреЗ @wardpeet рдкреНрд▓рдЧрдЗрди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

@ рдмреНрд░рд╛рдпрдирдмреЗрдВрдЯреЛ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рдЬрдирди рд╣реИ? рдпрджрд┐ рдЖрдк рд░реЗрдкреЛ рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/wardpeet/gatsby-plugin-static-site рдореИрдВ рдПрдХ рдирдЬрд╝рд░ рдХреНрдпрд╛ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

@wardpeet рдореИрдВ

@ рдмреНрд░рд╛рдпрдирдмреЗрдВрдЯреЛ рдЖрдкрдиреЗ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢

@ethagnawl рдореБрдЭреЗ рдЕрднреА рднреА URL рд╕реБрдзрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдпрд╣ рдкрде рдЙрдкрд╕рд░реНрдЧ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП "/"рдмрди рдЬрд╛рддрд╛ рд╣реИ" //"рд╡рд┐рд╣рд┐рдд рдХреЗ рдмрд╛рдж рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред

рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛? рдХреНрдпрд╛ рдореБрдЭреЗ рд╕реНрдерд┐рд░ рд╕рд╛рдЗрдЯ рдкреНрд▓рдЧрдЗрди рд╕рдХреНрд░рд┐рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛?

рд╣рд╛рдБред рдореИрдВ рджреВрд░рд╕реНрде рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕ рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рддреЛ, рдпрд╣ _possible_ рдЙрд╕ рд╢рд╛рдЦрд╛ рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреЗрд╢ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдореЗрд░реЗ рдФрд░ рдЖрдкрдХреЗ рдирд╣реАрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЧреИрдЯреНрд╕рдмреА рд░рд┐рд▓реАрдЬ (рдореИрдВрдиреЗ рдирд╣реАрдВ рд░рдЦрд╛ рд╣реИ) рдиреЗ рдореЗрд░реЗ "рд╕рдорд╛рдзрд╛рди" рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╣реИрдХ рдерд╛ рдЬрд┐рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдерд╛ред

@ethagnawl рд╕реБрдкрд░ рдорджрджрдЧрд╛рд░! рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдкрддрд╛ рд╣реИ @DSchau рдиреЗ рдПрд╕реЗрдЯрдкреНрд░рд┐рдлрд╝рд┐рдХреНрд╕ рдлрд╝реАрдЪрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛рдПред рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреВрдБрдЧрд╛!

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @wardpeet рд╕рдорд╛рдзрд╛рди рддрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдкрде рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд __disable_client_side_routing__ рдХрд┐ рд╡рд┐рд╣рд┐рдд рдЪреЗрдХ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд╣ рд╕реБрдкрд░ рдХреВрд▓ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддреЛ рдПрдХ рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди, рдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░реЛрдбрдореИрдк рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ?

@xavivars рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдФрд░ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред

@xavivars рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ @wardpeet рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдВрдж рдерд╛ред рдпрджрд┐ рдЖрдк рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореЗрд░реЗ рдкреНрд░рдпрд╛рд╕ рдХреЛ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @ethagnawl ! рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реА, рдФрд░ рдореИрдВ рдЬреЛ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рд╡рд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдерд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @wardpeet рд╕рдорд╛рдзрд╛рди рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ: рдРрдк рдПрдХ рдПрд╕рдкреАрдП рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рдВрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ location.href рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб" рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдЕрднреА рднреА рд╣реЛ рд░рд╣рд╛ рд╣реИ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛: рдореЗрд░реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рд╡рд╣рд╛рдБ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рд╣реИ prefixPath рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╢рд░реНрдд рд╣реИ рдХрд┐ рдмрдирд╛рддрд╛ рд╣реИ true

https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/cache-dir/production-app.js#L65

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдерд╛?

рдореИрдВ рдкреНрд▓рдЧрдЗрди рдкрд░ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджрд╛ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдереЛрдерд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рддрдп рдХрд░рдирд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рдирдП рд╡рд┐рд▓рдп рдХрд┐рдП рдЧрдП рдПрд╕реЗрдЯрдкреНрд░рд┐рдлрд╝рд┐рдХреНрд╕ рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдирд╣реАрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

@xavivars

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдерд╛?

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рд╣реИрдХ рдФрд░ рд╕рдмрдорд┐рдЯ рдХрд┐рдП рдЧрдП PR рджреЛрдиреЛрдВ _ _ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗ: рдХреЛрдИ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХрд▓, рд╕реНрдерд┐рд░ рдкреГрд╖реНрда рдкреАрдврд╝реАред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреАрдЖрд░ рдХреЛ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЧреИрдЯреНрд╕рдмреА рдХреА рдЯреАрдо рдХреЛ рдРрдк-рд╕реНрддрд░реАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреНрд▓рдЧрдЗрди рдкрд╕рдВрдж рдХрд░рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рдерд╛ред

рдореИрдВ @wardpeet рдХреЗ рдкреНрд▓рдЧрдЗрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЧрдП рд╕рдордп рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдореИрдВ

@wardpeet : рдПрд╕реЗрдЯрдкреНрд░рд┐рдлрд╝рд┐рдХреНрд╕ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджреЛрдиреЛрдВ рдкреНрд▓рдЧрдЗрди (рдореВрд▓ рд░реВрдк рд╕реЗ, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХреЛ "рдиреЗрд╡рд┐рдЧреЗрд╢рди" рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╕рдордп, рдЪрд╛рд░реЛрдВ рдУрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ) рдФрд░ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдкрд╣рд▓реЗ @ethagnawl рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

https://github.com/gatsbyjs/gatsby/issues/4337#issuecomment -45724241111

рдЙрд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ onClientEntry "

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдРрдк-рд╕реНрддрд░реАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ "рдкреЗрдЬ рдкреЗрдЬ" рдХреЗ рд░реВрдк рдореЗрдВ рдЧреИрдЯреНрд╕рдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

@xavivars рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд┐рдВрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ:

рдкрд╣рд▓реЗ рдмрддрд╛рдП рдЧрдП рд╕реНрдЯреИрдЯрд┐рдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЧреИрдмреА-рдмреНрд░рд╛рдЙрдЬрд░.рдЬреЗрдПрд╕ рдореЗрдВ

exports.onClientEntry = () => {
    window.page = window.page || {};
    window.page.path = window.location.pathname;
}

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЧреИрдЯреНрд╕рдмреА рдЗрдВрдЯрд░реНрдирд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:

export function onInitialClientRender() {
  window.___navigate = (to, { replace }) => {
    if (replace) {
      window.location.replace(to);
    } else {
      window.location.assign(to);
    }
  };
}

рдХреНрдпрд╛ https://github.com/wardpeet/gatsby-plugin-static-site рдФрд░ wealthPrefix рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛ рдЬрд┐рд╕рдиреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛, рдЕрдирд┐рд╢реНрдЪрд┐рдд рдЕрдЧрд░ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рд┐рдПред
https://github.com/wardpeet/gatsby-plugin-static-site/issues/1#issuecomment -494802726

рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕рдиреЗ рддреАрдиреЛрдВ рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛: рдЧреИрдЯреНрд╕рдмреА рдкреНрд▓рдЧрдЗрди рд╕реНрдерд┐рд░ рд╕рд╛рдЗрдЯ + рдПрд╕реЗрдЯрдкреНрд░рд┐рдлрд╝рд┐рдХреНрд╕ + рдбрд┐рд╕реЗрдмрд▓ "рдиреЗрд╡рд┐рдЧреЗрдЯ" рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл gatsby- рдкреНрд▓рдЧрдЗрди-рд╕реНрдереИрддрд┐рдХ-рд╕рд╛рдЗрдЯ рдФрд░ рдПрд╕реЗрдЯрдкреНрд░рд┐рдлрд╝рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

@wardpeet рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреЗрдореЛ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ рдЬреЛ рдХрд┐ gatsby-plugin-static рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?

@ethagnawl рдЖрдкрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдПрдХ рдбреЗрдореЛ рдмрдирд╛рдпрд╛:
https://github.com/wardpeet/gatsby-demos/tree/static-asset-prefix

рд╕рд╛рдЗрдЯ рд▓рд╛рдЗрд╡ рд╣реИ:
https://zen-wright-33c2d8.netlify.com/

рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ ( @TuckerWhitehouse рдФрд░ @ethagnawl рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпрд╛рд╢рд┐рдд), https://github.com/gatsbyjs/gatsby/issues/4337#issececomment -453244611 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдПрдХ рдирд╛рдЬреБрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, Gatsby 2.9.2 рдореЗрдВ:

рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛, рд╕реЙрд▓реНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛, рдпрд╣ рд▓рд╛рдЗрди
window.page.path = window.location.pathname;
рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
window.pagePath = window.location.pathname;
URL рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рд╣реЛрддрд╛ рд╣реИ: рдкреЗрдЬрдкреИрде _wrong_ рдкрде рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреЗрдЬ-рдбреЗрдЯрд╛.рдЬреЙрди рдХреЛ рдЕрдм рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкреГрд╖реНрда рдХреЗ рдореВрд▓ рдкрде рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рди рдХрд┐ рд╡рд╣ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

https://github.com/gatsbyjs/gatsby/commit/49fd769f695ccfa6e990e3eaae7c886f073db19b#diff -2d21ea4224874a0988977e57b17251aaaa

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рдЕрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ __disable_client_side_routing__ рдпрд╛ рдХрдо рд╕реЗ рдХрдо, __disable_client_side_canonical_redirect__ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╢реЙрд░реНрдЯрдХреНрд░рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: https://github.com/gatsbyjs/ gatsby / blob / master / package / gatsby / cache-dir / production-app.js # L69

@wardpeet : рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрдиреНрдлрд┐рдЧ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЛрд░ рдореЗрдВ рдЗрди рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдпрд╣ рд╣реИ:

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ gatsby рд╕рд╛рдЗрдЯ рдФрд░ рдПрдХ рдкрде / рдореЗрд░рд╛-рд╡рд┐рд╢реЗрд╖-рдкрде рд╣реИ рдФрд░ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╛рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕реЗ / рдХреБрдЫ рдФрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ / gatsby / my-special-path рдХреЛ / рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреГрд╖реНрда рдХреЛ / my-special-path рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ?

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд▓рд╛рдЗрд╡ рдбреЗрдореЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╣рд╛рдВ, рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рдПрдХ рдФрд░ PR рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ (рдЬреЛ рдХрд┐ рдХреБрдЫ рдХреЛ рдЗрдирд╡реЗрд╕рд┐рд╡ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЧреНрд▓реЛрдмрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ https://github.com/gatsbyjs/gatsby/pull/15173)ред

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдПрдХ рдФрд░ рдкреАрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдзрдХреНрдХрд╛ рджреВрдВрдЧрд╛

@wardpeet рдпрд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Gatsby рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП

https://github.com/gatsbyjs/gatsby/pull/15180

рдбрд┐рд╕реНрдХреЛрд░реНрдб рдореЗрдВ

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдХреИрдиреЛрдирд┐рдХрд▓ рд░рд┐рдбрд╛рдпрд░реЗрдХреНрдЯ рдЪреЗрдХ рдХреЛ рд╢реЙрд░реНрдЯрдХреНрд░реИрд╕рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд┐рдЧ рд╡реЗрд░рд┐рдПрдмрд▓ (# 15173) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдЧреИрдЯреНрд╕рдмреА (# 15180) рдХреЗ рд▓рд┐рдП рдХрдерд┐рдд рд░реЗрдВрдбрд░ URL рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреИрдиреЛрдирд┐рдХрд▓ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдЪреЗрдХ рд╕реАрдзреЗ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ window.location , рд▓реЗрдХрд┐рди рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЪрд░ рдкрд░ред

IMHO, рдЪреБрдиреМрддреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ / рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдЕрднреА рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ / рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рд╕реАрдзреЗ рдХрд╣реАрдВ рд╕реЗ рднреА рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ window.location рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рд╣реИ) рд▓реЗрдХрд┐рди рдХреЛрд░ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

@xavivars рдореИрдВ https://github.com/wardpeet/gatsby-plugin-static-site/pull/4 рдХрд╛ рд╡рд┐рд▓рдп рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред

рдПрдХ рдбреЗрдореЛ: (рдкреЗрдЬ 5 рдореЗрдВ рдПрдХ рд╡рд┐рд╣рд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╣реИ)
https://static-asset-prefix--zen-wright-33c2d8.netlify.com/

рдореИрдВрдиреЗ рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ @ рд╡рд╛рд░реНрдбрдкреЗрдЯ / рдЧреИрдЯреНрд╕рдмреА-рдкреНрд▓рдЧрдЗрди-рд╕реНрдЯреИрдЯрд┐рдХ-рд╕рд╛рдЗрдЯ рд╕рдВрд╕реНрдХрд░рдг 0.1.0 рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдлрд┐рд░ рд╕реЗ рдореБрдХреНрдд рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдмреЗрд╣рддрд░ рд╕реНрдереИрддрд┐рдХ рд╕рд╛рдЗрдЯ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреНрд▓рдЧрдЗрди рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рд╣реИред https://github.com/wardpeet/gatsby-plugin-static-site/issues/new

рдХрд┐рд╕реА рдХреЛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЗрд╕ рдКрдкрд░ рдкреНрд▓рдЧрдЗрди рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж?

GatsbyJS рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА:
https://github.com/wardpeet/gatsby-plugin-static-site

рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдореБрджреНрджрд╛ рдЙрдард╛рдпрд╛:
https://github.com/wardpeet/gatsby-plugin-static-site/issues/13

рдореИрдВрдиреЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рд░реЗрдкреЛ рднреА рдмрдирд╛рдпрд╛:
https://github.com/isi-gach/gastby-static/tree/create-react-app

@ isi-gach рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдореВрд▓ рдореБрджреНрджреЗ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рдорди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ (рдЖрдк рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ)? рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рд╣рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рд╣рд╛рдп @ethagnawl

рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ URL рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ URL рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдБ, рдирд┐рдореНрди рд╡реАрдбрд┐рдпреЛ рдореЗрдВ URL /demo/index.html рд╕реЗ /public/ рдмрджрд▓рддрд╛ рд╣реИ
https://www.youtube.com/watch?v=SxYbaDidnkY

рдЙрд╕ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдирдореВрдирд╛ рд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдмрдирд╛рдпрд╛ рд╣реИ:
https://github.com/isi-gach/gastby-static/tree/create-react-app

рдореИрдВ @wardpeet/gatsby-plugin-static-site рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╣рд╛рдп @ isi-gach @ethagnawl ,

@Wardpeet рдкреНрд▓рдЧ-рдЗрди рдореЗрдВ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЦреЛрд▓рдирд╛ рд╣реИ

рдЬрдмрдХрд┐ рдЙрдирдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╣рд╛рдп @xavivars
рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХрд╛рдВрдЯреЗ рд╕реЗ npm рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЕрдм URL рдирд╣реАрдВ рдмрджрд▓рд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрда рдорд┐рд▓рд╛:
https://www.youtube.com/watch?v=uNzk9UYVCxk

рдЙрд╕ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ wardpeet рдЬрдЧрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдореВрдирд╛ рд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
https://github.com/isi-gach/gastby-static/tree/create-react-app

рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

exports.onPreBootstrap = ({ store }) => {
  const { program } = store.getState()
  const filePath = path.join(program.directory, '.cache', 'production-app.js')

  const code = fs.readFileSync(filePath, {
    encoding: `utf-8`,
  })

  const newCode = code.replace(
    `const { pagePath, location: browserLoc } = window`,
    `const { pagePath } = window
    let { location: browserLoc } = window

    if (window.parent.location !== browserLoc) {
      browserLoc = {
        pathname: pagePath
      }
    }
  `
  )

  fs.writeFileSync(filePath, newCode, `utf-8`)
}

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд▓рдЧрдЗрди рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

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

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

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

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

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

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