Razzle: рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jaredpalmer/razzle

рдирдорд╕реНрддреЗ,

рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛?
рдореИрдВ webpack config рдореЗрдВ url-loader рдФрд░ file-loader рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж,
рднрд╛рдЧрд╛ рд╣реБрдЖред

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

@justingreenberg babel-register рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:

require('babel-register');
if (process.env.NODE_ENV == 'development') {
  require.extensions['.png'] = function () {};
  require.extensions['.jpg'] = function () {};
  require.extensions['.jpeg'] = function () {};
  require.extensions['.woff'] = function () {};
  require.extensions['.woff2'] = function () {};
  require.extensions['.ico'] = function () {};
  require.extensions['.svg'] = function () {};
}
require('./server');

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдлреЛрдВрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

,
{
  test: /\.(woff)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  loader: "url?limit=100000&mimetype=application/font-woff"
}

рд╕рд░реНрд╡рд░ рдЫрд╡рд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИ, рдЖрдкрдХреЛ ssr рдХреЗ рд▓рд┐рдП рд╣реБрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
https://github.com/bahmutov/node-hook

рднреА рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

require('babel-register')
if (development variable) require.extensions['.png'] = function () {};
require('./server')

рдореИрдВрдиреЗ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/tcoopman/image-webpack-loader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓-рд▓реЛрдбрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛

@jaredpalmer рдЕрд░реЗ рдпрд╛рд░, рдХрдорд╛рд▓ рдХреА рдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :) рдореБрдЭреЗ рдпрд╣ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдлреЛрдВрдЯ рдХреА рддрд░рд╣ SSR рдЪрд┐рддреНрд░ / рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреИрд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ:

// logo-component.js
import LogoImage from './logo.png' // colocated image in component folder

export default ({ linkUrl }) =>
  <a href={linkUrl}>
    <img src={LogoImage} alt="Logo" /> 
  </a>

рдореИрдВ рдКрдкрд░ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП webpack-isomorphic-tools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдФрд░ рд╕реЗрдЯрдЕрдк рдХреЛ рдмрд╣реБрдд рднрдВрдЧреБрд░ рдФрд░ рд╣реИрдХ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ ... рдореИрдВ рдПрдХ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реВрдВ, рдпрд╣ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП assets.json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

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

рдореБрдЭреЗ рд╢рдХ рд╣реИ рдХрд┐ рдореИрдВ рд╢рд╛рдпрдж рдПрдХ рд╕реБрдкрд░ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреА рдЕрдирджреЗрдЦреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ .... рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж !! :)

рдЖрдк рд╕рднреА рдХреЛ npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ url-loader рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ webpack.config рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

      ....
      {
        test: /\.(gif|jpe?g|png|ico)$/,
        loader: 'url-loader?limit=10000'
      },
      {
        test: /\.(otf|eot|svg|ttf|woff|woff2).*$/,
        loader: 'url-loader?limit=10000'
      }
      ...

рдлрд┐рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред BTW рд╕реАрдорд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд┐рд░реНрдл url-loader рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕реАрдорд╛ рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдбреЗрдЯрд╛-рдпреВрдЖрд░рдЖрдИ рдмрдирд╛ рд╕рдХрддреА рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

рд╡реЗрдмрдкреИрдХ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рд╕реЗ new webpack.IgnorePlugin(/\.(css|less|scss|svg|png|jpe?g|png)$/), рднреА рдирд┐рдХрд╛рд▓реЗрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП @jaredpalmer рдзрдиреНрдпрд╡рд╛рдж :) рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рднрд╛рдЧ рд░рд╣рд╛ рдерд╛ ... рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВ https://www.npmjs.com/package/webpack-isomorphic-tools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдмрд╣реБрдд рднрджреНрджреА ...

@ rowellx68 рдЖрдкрдиреЗ рдЗрдореЗрдЬ-рд╡реЗрдмрдкреИрдХ-рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рд╢рд╛рдпрдж рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ b2whats рдЖрдкрдХреЗ node-hook рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рд╡рд╣рд╛рдБ рд╕рдВрдкрддреНрддрд┐ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@justingreenberg babel-register рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:

require('babel-register');
if (process.env.NODE_ENV == 'development') {
  require.extensions['.png'] = function () {};
  require.extensions['.jpg'] = function () {};
  require.extensions['.jpeg'] = function () {};
  require.extensions['.woff'] = function () {};
  require.extensions['.woff2'] = function () {};
  require.extensions['.ico'] = function () {};
  require.extensions['.svg'] = function () {};
}
require('./server');

@justingreenberg image-webpack-loader рдмрд╕ рдЖрдкрдХреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдЧрд╛ ... рдЖрдк рдЗрд╕реЗ file-loader рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

...
      {
        test: /\.(png|jpg|jpeg|gif)(\?.*)?$/,
        loaders: [
          'file',
          'image-webpack?' + JSON.stringify({
            bypassOnDebug:true,
            progressive: true,
            optimizationLevel: 7,
            interlaced: true,
            pngquant: {
              quality: "65-90",
              speed: 4
            },
            svgo: {
              removeUnknownsAndDefaults: false,
              cleanupIDs: false
            }
          })
        ]
      },

рдореИрдВ рдЕрднреА рднреА рдлреЛрдВрдЯ рдФрд░ svg рдХреЗ рд╕рд╛рде url-loader рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

@ rowellx68 @ b2what рд╣рдореЗрдВ url-loader рд╕рд╛рде рдЗрд╕рдХреЗ рд▓рд┐рдП PR рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рджреЗрд╡ рдореЗрдВ require.extension рдбрд╛рдЙрдирд╕рд╛рдЗрдб рдХреНрдпрд╛ рд╣реИрдВ? рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдХреЛ рдХреЗрд╡рд▓ рдЖрдИрдПрдордПрдЪрдУ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрд▓реАрдирд░ рд╣реИред ЁЯдФ

@jaredpalmer re: рдкреИрдЪрд┐рдВрдЧ рдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ ... рдЗрд╕рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рд╣реА рдореЙрдбреНрдпреВрд▓ url-loader рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ!

рдкреБрди: рдЫрд╡рд┐-рд╡реЗрдмрдкреИрдХ, рд╡рд╣ рдореЗрд░реА рд╕рдордЭ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдиреБрдХреВрд▓рди) рдереА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╢рд╛рдпрдж рдХреБрдЫ рдРрд╕рд╛ рдерд╛ рдЬреЛ рдореБрдЭреЗ рдиреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рдЖ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ @ rowellx68 рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛

рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!

@jaredpalmer require.extensions рдкрджрд╛рд╡рдирдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?

@justingreenberg re: image-webpack-loader ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐рдпрд╛рдБ assest.json рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝реА рдЧрдИрдВред

@ rowellx68
рд╣рдо рд╕реНрд▓рд╛рдЗрд╕ рджреЗрд╡ рдФрд░ рдареЗрд╕ рдореЛрдб рдХреА рдЬрд░реВрд░рдд рд╣реИред webpack config рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреЗрд╡ рдореЛрдб рдореЗрдВ рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдпреВрдЖрд░рдПрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдареЗрд╕ рдореЛрдб рдореЗрдВ рд╣рдо рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореИрдВрдиреЗ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рдЖрдкрдХреЗ рд▓рд┐рдП robots.txt, favicon рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ pbulic рдлрд╝реЛрд▓реНрдбрд░ рд╣реИред рдпрд╣ "рд╕рд╣реА рд╕рдорд╛рдзрд╛рди" рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмрдВрдбрд▓реНрд╕ рдЬреЗрдПрд╕ -> public/assets (рдЬреЛ рдЧрд┐рдЯ рдореЗрдВ рдЪреЗрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдХреЗ requireHooks рд╕рдорд╛рдзрд╛рди @justingreenberg рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ рдХрд┐ рдЗрдирд▓рд╛рдЗрди рдХрд░рдиреЗ рдФрд░ рдХреИрд╢ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреА рд╣реЛрдЧрд╛ред

рд╣реЗ рд╕рдм, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдереИрддрд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдЪрд░реНрдЪрд╛ рдХреБрдЫ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

рдореИрдВ рдХреЛрдИ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ рдЬреЛ рд╡реЗрдмрдкреИрдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдлреА рдирдпрд╛ рд╣реИ (рдкрдврд╝реЗрдВ: рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рдХрд┐ рдЗрд╕реЗ рдЕрднреА рддрдХ рдХреИрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП) рдФрд░ рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╢реИрд▓реА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИред рдХреНрдпрд╛ рдЙрдирдХреА рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд▓реЗрдЖрдЙрдЯ, рдЖрджрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлреНрд░реЛрд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

target: 'node' рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдиреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпрд╛ рд╡реЗрдмрдкреИрдХ-рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ-рдЯреВрд▓реНрд╕ рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рд╕рднреА рд╡реЗрдмрдкреИрдХ рд▓реЛрдбрд░ рдЕрдЪреНрдЫрд╛рдИ рд╣реЛрдЧреАред
рдпрд╛ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИ рдЬреЛ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ? рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡реЗрдмрдкреИрдХ рдШрдбрд╝рд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдмрд╕ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдареЗрд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрд╡ рднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ?

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