Storybook: рдЗрдорд╛рд░рдд рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рд░рдЦрдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдорд╛рд░реНрдЪ 2017  ┬╖  57рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: storybookjs/storybook

рдореЗрд░реЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо public рдЬрд┐рд╕реЗ рдореЗрд░реЗ рдиреЛрдб рд╕рд░реНрд╡рд░ рд╕реЗ /public/... рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪрд┐рддреНрд░ рдФрд░ CSS рдлрд╛рдЗрд▓реЗрдВ рдЙрд╕ /public/ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рджреА рдЧрдИ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: start-storybook -p 6006 -s ./public
/public/ рд╡рд╛рд▓рд╛ рдкрде рдЕрдм рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рд╕реЗрд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЛ start-storybook -p 6006 -s ./ рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЕрдкрдиреА рд╕реНрдЯреЛрд░реАрдмреБрдХ build-storybook -s ./ рдХреЗ рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реВрдВ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ storybook-static рдХреЙрдкреА рдХрд░ рд▓реЗрдЧреАред
рдФрд░ рдЕрдЧрд░ рдореИрдВ рдХрдорд╛рдВрдб рдХреЛ build-storybook -s ./public рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ /public/ рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рд▓рд╛ рдкрде рдЕрдм рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рд╕реНрдереИрддрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

feature request has workaround help wanted

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

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ./public /static рдкрде рд╕реЗ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП start-storybook -p 6006 -s "./public:/static" рдХрд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдмреЗрд╣рдж рд▓рдЪреАрд▓реЗ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдорд╛рд░реНрдЧ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рдбреЙрдХрд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдлрд┐рдЯ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред

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

рд╣рдореНрдо рддреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ build-storybook рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХреБрдЫ рд╣реИред

рдЖрдк рдХрд╕реНрдЯрдо рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
https://github.com/storybooks/react-storybook/pull/435#issuecomment -26464131388
https://github.com/storybooks/react-storybook/blob/master/src/server/middleware.js#L35

: +1: рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд╕рд┐рд░реНрдл рджреЗрд╡ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрд╣рд╛рдБ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛:

const express = require('express');
const path = require('path');
const paths = require("../config/paths");

const expressMiddleWare = (router) => {
    console.log(path.join(__dirname), paths.appPublic);
    router.use('/public', express.static(paths.appPublic))
};

module.exports = expressMiddleWare;

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реИ

рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! тЭдя╕П

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ! рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рдЕрднреА рднреА рдкреНрд░рд╢реНрди, рдЯрд┐рдкреНрдкрдгреА рдпрд╛ рдмрдЧ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рд░ рдореБрджреНрджреЗ рдкрд░ рдЖрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рд╣рдо рд╣рдореЗрд╢рд╛ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд░рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ рдЕрдЧрд░ рдЖрдк рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред 60 рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореБрджреНрджреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

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

рдирдорд╕реНрддреЗ! @ndelangen @hansthinhle @patrickgordon

Im рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдХрднреА рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

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

рд╣рд╛рдп @aviramga - рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ред рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрднреА рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рд╣реИ рдХрд┐ рдореЗрд░реА рд╕реНрдореГрддрд┐ рдХреЛ рдЭрдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ :)

рд╣рд╛рдп @patrickgordonред рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдХреЗрд╡рд▓ рдмрд┐рд▓реНрдб-рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рд╕рд╛рде рд╣реИ: /

рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ ui рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрд╕реА рдирд╛рдордХ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рдерд╛?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд┐рдорд┐рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдПрдХ рдордирдорд╛рдирд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬреЛрдбрд╝реЗрдВ (рдЬреИрд╕реЗ static-link , рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде public (рдмрд┐рдирд╛ рдХрд┐рд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ) рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓реЗрдВ:

../public

рддрдм рдЖрдкрдХреЛ -s static-link рд╕рд╛рде рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@Hypnosphi рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдореЗрд░реА рд╕рднреА рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓реЗрдВ "рд╕реНрдЯреЗрдЯрд┐рдХ" (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ) рдирд╛рдо рдХреА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╣реИрдВред
рдореИрдВрдиреЗ рдЙрди рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ:

  1. "рд╕реНрдерд┐рд░" рдФрд░ ../static рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдордирдорд╛рдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ - рдЬрдм рдореИрдВ рдмрд┐рд▓реНрдб-рд╕реНрдЯреЛрд░реАрдмреБрдХ рдЪрд▓рд╛рдКрдВ рддреЛ рдХреИрд╕реНрдб рдмрд┐рд▓реНрдб рдПрд░рд░
  2. рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд╕рдорд╛рди рд▓реЗрдХрд┐рди "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ" рдирд╛рдо рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде - рдлрд┐рд░ рднреА рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ

рдХреЛрдИ рд╕рд▓рд╛рд╣?

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

рдЖрдк рдХрд┐рд╕ OS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
https://en.wikipedia.org/wiki/Symbolic_link#Overview

рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рдереА?

рдореИрдХ рдЙрдЪреНрдЪ рд╕рд┐рдПрд░рд╛

@Hypnosphi рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ

рд╕рд╣реА рдмрд╛рдд?

рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдореНрдХрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдирд┐рд░реНрджреЗрд╢ рдЧрд▓рдд рдерд╛ред рд╕рд╣реА рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ:

mkdir static-link
ln -s static static-link/static

рдпрд╣ рд╕реНрдЯреИрдЯрд┐рдХ-рд▓рд┐рдВрдХ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдПрдХ "рдлрд╛рдЗрд▓" рдмрдирд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ git рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)

@ рд╣рд╛рдЗрдкреЛрд╕реНрдлреА рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╣рд░ рдмрд╛рд░ рдмрд┐рд▓реНрдб-рд╕реНрдЯреЛрд░реАрдмреБрдХ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛?

рдирд╣реАрдВ, рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@ рд╣рд╛рдЗрдкреЛрд╕реНрдлреА рдиреЛрдк , рдлрд┐рд░ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдореБрдЭреЗ рдПрдХ рд▓реЙрдЧ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ:
cp: рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛: static-link / static

рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЦрд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдЯреЗрдЯрд┐рдХ-рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рд╕реНрдЯреЗрдЯрд┐рдХ рд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХ-рд▓рд┐рдВрдХ / рд╕реНрдЯреЗрдЯрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ :)

рдФрд░ рдЖрдк -s static-link рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╣реИ рдирд╛?

@Hypnosphi рдЖрдк рдмрд┐рд▓реНрдб-рд╕реНрдЯреЛрд░реАрдмреБрдХ -рд╕реА .storybook -s рд╕реНрдЯреЗрдЯрд┐рдХ-рд▓рд┐рдВрдХ рдХрд╛ рдорддрд▓рдм рд╣реИ?

рд╣рд╛рдБ

рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЧрд▓рдд рд╕рдордЭрд╛:

ln -s ../static static-link/static

@ рд╣рдиреАрдкреЛрд╕реНрдлреА
рдХреНрдпреЛрдВ ../static?

рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВрдВ рдХрд┐ рд╕реНрдЯреЗрдЯрд┐рдХ-рд▓рд┐рдВрдХ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЦрд╛рд▓реА рд╣реИ?
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдирд┐рдЬреА рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЧрд▓рдд рдорддрд▓рдм рд╣реИ :)

рдпрд╣ рд▓рд┐рдВрдХ рд╕реНрдерд╛рди рд╕реЗ рд▓рд┐рдВрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╣реИ

@ рд╣рд╛рдЗрдкреЛрд╕реНрдлреА рдореИрдВ рдЗрд╕реЗ рдкреВрд░реНрдг рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ ..... рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдкрде рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрд╕реА рддрд░реНрдХ рдХреЛ рд╕реЗрдорд╛рдлреЛрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

@ рд╣рд╛рдЗрдкреЛрд╕реНрдлреА рдХреЛ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛ред рдЖрдкрдХреА рд╕рднреА рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдПрдХ рдЬреАрд╡рди рд░рдХреНрд╖рдХ рд╣реИрдВ !!

рдХрд┐ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЯрд┐рдк?

рд╣рд╛рдВ, рдмрд╕ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЛ рдЪрд▓рд╛рдПрдВред рд╕рд┐рдорд┐рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
ln -s /<absolute-path-your-static-directory> storybook-static-symlink/static

@aviramga рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдзрд┐ рдЕрднреА рднреА рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ? рдореБрдЭреЗ рд╕рд┐рдореНрдмрд▓рд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реМрднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИред

рдореЗрд░реА рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛

|- docs
  |- folders-with-images
|- sandbox (holds my storybook files)
|- src
  |- README.md with image paths `/docs/folder/image.png`

рдореИрдВ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реНрдЯреЛрд░реАрдмреБрдХ start-storybook -c sandbox -s sandbox,docs -p 6006 рдкрд░реЛрд╕рддреЗ рд╣реБрдП рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

const express = require('express');
const path = require('path');

module.exports = router => {
  router.use('/docs', express.static(path.join(__dirname, '..', 'docs')));
}

рд▓реЗрдХрд┐рди ln -s /docs sandbox/docs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕рд┐рдорд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдирд╛ рдФрд░ build-storybook -c sandbox -s sandbox,docs -o storybook рдЪрд▓рдирд╛ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

docs рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдХреЙрдкреА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореБрдЭреЗ рдлрд╝рд╛рдЗрд▓ рдкрде рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ /docs/folder/image.png 404 рд╣реИ, рддрдм рддрдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ 404ред

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдереИрддрд┐рдХ-рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ:

package.json:

"scripts": {
  "storybook": "(mkdir ./src/static-link || true) && (ln -s ../static ./src/static-link/static || true) && start-storybook -p 6006 -s ./src/static-link"
}

рдореИрдВ рд╕рдВрдЧрддрддрд╛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП package.json рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдорд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛, рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдПрдХ рд╣реА рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ .storybook / webpack.config.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА- рд╡реЗрдмрдкреИрдХ -рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЬреИрд╕реЗ:

const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = config => {
  function resolve(dir) {
    return path.join(__dirname, '..', dir);
  }

  // Other configuration properties

  config.plugins.push(
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, 'static-foo'),
        to: '.'
      },
      {
        from: path.resolve(__dirname, '../static-bar'),
        to: './bar'
      }
    ])
  );

  return config;
}

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА .storybook/static-foo рд╕реЗ http://localhost:6006/ рдФрд░ static-bar http://localhost:6006/bar/ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдЧрд╛ред

рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП push plugins рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рд╕реАрдорд▓рд┐рдВрдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ / рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ -r рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреИрд╕реЗ: ln -rs dir1 air2

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

рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдХреЛрдИ рдЕрдзрд┐рдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рднреА "рд╕рдорд╛рдзрд╛рди" рдмрд╕ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░реИрдкреА рд╣реИрдХреНрд╕ рд╣реИрдВ :)

рдореИрдВ рд╕рдВрдЧрддрддрд╛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП package.json рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдорд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛, рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдПрдХ рд╣реА рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ .storybook / webpack.config.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА- рд╡реЗрдмрдкреИрдХ -рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЬреИрд╕реЗ:

const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = config => {
  function resolve(dir) {
    return path.join(__dirname, '..', dir);
  }

  // Other configuration properties

  config.plugins.push(
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, 'static-foo'),
        to: '.'
      },
      {
        from: path.resolve(__dirname, '../static-bar'),
        to: './bar'
      }
    ])
  );

  return config;
}

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА .storybook/static-foo рд╕реЗ http://localhost:6006/ рдФрд░ static-bar http://localhost:6006/bar/ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдЧрд╛ред

рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП push plugins рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ;)

рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:

.storybook / webpack.config.js
(рд╕реНрдереИрддрд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рд╣реИ)

const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = async ({ config }) => {

  function resolve(dir) {
    return path.join(__dirname, '..', dir);
  }

  // Other configuration properties

  config.plugins.push(
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../../static'),
        to: './static'
      }
    ])
  );

  return config;
}

@mtrabelsi рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ .storybook рдлрд╝реЛрд▓реНрдбрд░ рдПрдХ рд╕реНрддрд░ рдкрд░ root рд╕реЗ рдЧрд╣рд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рд╣реИ, рди рдХрд┐ рдбрдмрд▓ рдЧрд╣рд░рд╛ред рддреЛ, рдЖрдкрдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
from - from: path.resolve(__dirname, '../../static')
to - from: path.resolve(__dirname, '../static')

"рдХреЙрдкреА-рд╡реЗрдмрдкреИрдХ-рдкреНрд▓рдЧрдЗрди": "^ 5.0.4"
рд╕рднреА рд░рд╛рд╕реНрддреЗ рд╕рд╣реА рд╣реИрдВред рджреЛ рдмрд╛рд░ рдЬрд╛рдВрдЪ рдХреА рдЧрдИред

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рдореИрдВрдиреЗ middleware.js рдлрд╝рд╛рдЗрд▓ рдЕрдкрдиреЗ .storybook/ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдХрд░ @BradMcGonigle рдКрдкрд░реА рдХреЗ рд╕рд╛рде рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ:

const express = require('express');
const path = require('path');

module.exports = router => {
  router.use('/docs', express.static(path.join(__dirname, '..', 'docs')));
}

@BiosBoy рдпрд╣рд╛рдБ рдХрд┐рд╕реА рднреА рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ (рдХреЗрд╡рд▓ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ):

My_sweet_projet_ROOT_DIR / рдШрдЯрдХреЛрдВ / .storybook / webpack.config.js
My_sweet_projet_ROOT_DIR / рд╕реНрдерд┐рд░

рдореИрдВ рднреА рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ next.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдШрдЯрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк (рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдУрд░ рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдЖрдк рдкрд░ рднрд░реЛрд╕рд╛ рд╣реИ: рдбреА)

My_sweet_projet_ROOT_DIR / package.json

{
  "name": "sweet_like_butter",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@zeit/next-css": "^1.0.1",
    "next": "^8.1.0",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "styled-components": "^4.2.0"
  },
  "scripts": {
    "dev": "next",
    "build": "next build",
    "start": "next start"
  },
  "devDependencies": {
    "babel-plugin-styled-components": "^1.10.0"
  }
}

My_sweet_projet_ROOT_DIR / next.config.js

const withCSS = require('@zeit/next-css')
module.exports = withCSS()

рдореИрдВ рдмреЗрд╕ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

  1. рдЕрдкрдиреА .storybook рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ manager-head.html рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред https://storybook.js.org/docs/configurations/add-custom-head-tags/
  2. рдЬреЛрдбрд╝рдирд╛
<head>
  <script>
    const hostname = window.location.hostname
    if (hostname !== "" && hostname !== "localhost") {
      const script = document.createElement('base')
      script.href = '/storybook-static/'
      document.getElementsByTagName('head')[0].appendChild(script)
    }
  </script>
</head>

(script.href = рдЖрдкрдХреЗ рдЗрдЪреНрдЫрд┐рдд рдкрде рдХреЗ рд▓рд┐рдП)

index.html рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдЕрдм рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ

рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдЖрдк -s ./static рдЭрдВрдбрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рд░рд╛рд╕реНрддреЗ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕реЗ рд╡реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ? рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рд╕реНрдерд┐рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ./static , рддреЛ рдореЗрд░реЗ рд╕рд╛рдкреЗрдХреНрд╖ рд░рд╛рд╕реНрддреЛрдВ рдЬреИрд╕реЗ ./static/image.png рдХреЗ рдмрдЬрд╛рдп ./image.png рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХреБрдЫ рдирд╛рд╕рдордЭ рд╕рд┐рдореНрдкреАрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ЁЯдФ

@eckmLJE рдпрджрд┐ рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛

рдореИрдВ рдЕрднреА рднреА 2020 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ ...
рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдореЗрд░реЗ package.json рдореЗрдВ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ: "storybook": "start-storybook -s ./dist/img -p 8888"

рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ npm run storybook рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ info => Loading static files from: /home/vagrant/projects/MySuperProject/web/themes/ofb/ofb_ui/dist/img .

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕ URL рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ dist/img рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдБ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛: http://localhost:8888/myImage.png ...

рддреЛ рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рдпрд╛ рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?

@ndelangen рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо 6.0 рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рдЗрд╕реЗ рдлрд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рд╛рди рддрдп рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CopyWepbackPlugin рдПрдкреАрдЖрдИ рдмрджрд▓ рдЧрдИ рд╣реИ рдФрд░ рдЖрдкрдХреЛ @mtrabelsi рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ pattern рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = async ({ config }) => {
  config.plugins.push(
    new CopyWebpackPlugin({
      pattern: [
        {
          from: path.resolve(__dirname, '../../static'),
          to: './static'
        }
      ]
    })
  );

  return config;
}

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдкрдиреЗ рджреЛ рд╕реЗрдВрдЯ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди @mtrabelsi рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдмрд╕ рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ ./static рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реИ рдЬреЛ build-storybook рдХрдорд╛рдВрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЧрд░ рдореИрдВ рдПрдХ рдЯреЙрдордХреИрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдРрдк рдХреЛ рддреИрдирд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ http://example.com/docs рд╕реЗ рд╕реНрдереИрддрд┐рдХ рдРрдк рдХреЛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдбреЙрдХреНрд╕ рдЯреЙрдордХреИрдЯ рд╡реЗрдмреИрдкреНрд╕ / рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред

рдЙрдкрдкрде рдХреЗ рдХрд╛рд░рдг, / рд╕реНрдерд┐рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ / css рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдХреА рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рдереАред рдореИрдВ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдлреЛрдВрдЯ рдХреЗ рд▓рд┐рдП рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдпреЗ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдереЗ рдЬреЛ рддреИрдирд╛рдд рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗ рдереЗ)ред рддреЛ https://example.com/img/path/to/my/image рдЬреИрд╕реЗ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдП, рдЬрдм рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ / рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддред https://example.com/static/img/path/to/my/image рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, @mtrabelsi рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ рдЕрдЧрд░ рдлреЛрдВрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ img:

const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = async ({ config }) => {

  function resolve(dir) {
    return path.join(__dirname, '..', dir);
  }

  // Other configuration properties

  config.plugins.push(
    new CopyWebpackPlugin({
      pattern: [
        {
          from: path.resolve(__dirname, './_assets'), // My static font and images are located in the .storybook dir
          to: './' // Drop both the fonts/ and img/ directory into the root of the build output.
        }
      ]
    })
  );

  return config;
}

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдлреЛрдВрдЯ рдХреЛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

@tmeasday рдмрддрд╛рддрд╛ рд╣реИ: рд╣рдо рдЗрд╕реЗ main.js рд╡рд┐рдХрд▓реНрдк рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рджреЛрдиреЛрдВ start-storybook рдФрд░ build-storybook

@ vcastro45 рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯ-рд╕реНрдЯреЛрд░реАрдмреБрдХ рдФрд░ рдмрд┐рд▓реНрдб-рд╕реНрдЯреЛрд░реАрдмреБрдХ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ ( next рд╢рд╛рдЦрд╛ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛)ред

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

@ рд╢реАрд▓рдореИрди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрдЕрдк рдХреЛ рдКрдкрд░ рдЙрдард╛рдирд╛ рд╣реЛрдЧрд╛
https://github.com/storybookjs/storybook/blob/9ea455a1746c489b7364448212663f2445af8a8b/lib/core/src/server/manager/manager-config.js#L101-L102 -L102

рдпрд╣рд╛рдБ рд╕реЗ рдкрд╣рд▓реЗ:
https://github.com/storybookjs/storybook/blob/19c2420db80fcb3b89b34cdbbe03bf9010b0b3b2/lib/core/core/server/server/build-static.js#L190 -L1911

рдФрд░ рдлрд┐рд░ рдмрд┐рд▓реНрдб / рджреЗрд╡ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕рднреА рдирд┐рдЪрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВред
рдпрд╣ рдХрд╛рдлреА рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рд╣реИ, рдХреБрдЫ рдирд╣реАрдВ рдЬреЛ рдореИрдВ 1 рджрд┐рди рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣ рднреА рдПрдХ рдФрд░ рдХреНрд╖рдг рд╣реЛрдЧрд╛ рдЬрдм рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕рднреА рдЯреАрдПрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдо рд╡реИрд╕реЗ рднреА 50% lib / core рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреВ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред

@ndelangen OOF, рдЪрд▓реЛ рдЕрдм рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рд╣рд╛рдБ, рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рджрд┐рди рдХрд░реЗрдВрдЧреЗ

@ndelangen рдореИрдВрдиреЗ # 11370 рдореЗрдВ @tmeasday рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд┐рдпрд╛ рд╣реИред рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ main.js рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 6.x рдореЗрдВ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ./public /static рдкрде рд╕реЗ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП start-storybook -p 6006 -s "./public:/static" рдХрд╛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдмреЗрд╣рдж рд▓рдЪреАрд▓реЗ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдорд╛рд░реНрдЧ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рдбреЙрдХрд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдлрд┐рдЯ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ! рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рдЕрднреА рднреА рдкреНрд░рд╢реНрди, рдЯрд┐рдкреНрдкрдгреА рдпрд╛ рдмрдЧ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рд░ рдореБрджреНрджреЗ рдкрд░ рдЖрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рд╣рдо рд╣рдореЗрд╢рд╛ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд░рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ рдЕрдЧрд░ рдЖрдк рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореБрджреНрджреЛрдВ рдХреЛ 30 рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@nfroidure рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИ!

@ndelangen рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред рдХрд┐рд╕реА рднреА рдореМрдХрд╛ рдпрд╣ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?

@nfroidure рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛:
рдпрд╣рд╛рдБ рд╣реИ рдЬрд╣рд╛рдБ рдХреЛрдб рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛:
https://github.com/storybookjs/storybook/blob/9182d9f5ddbe136e9cd5fc9f11fa962a3cfe08f1/lib/core/serrc/server/build-dev.js#L77 -L9393

рд╡реИрд╕реЗ рдореЗрд░реЗ рдпрд╣рд╛рдБ рдХреБрдЫ рд╣реИ: https://github.com/storybookjs/storybook/pull/12222

рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрди рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдФрд░ рдореЗрд░реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред

LMKWYT;)

рдЗрд╕ PR @nfroidure рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдЗрд╕реЗ рджреЗрдЦреВрдВрдЧрд╛!

ZOMG !! рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА https://github.com/storybookjs/storybook/releases/tag/v6.1.0-alpha.6 рдХреЛ PR # 12222 рдпреБрдХреНрдд рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдЖрдЬрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЬ рд╣реА рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ!

рдЖрдк рдЗрд╕ @next рдПрдирдкреАрдПрдо рдЯреИрдЧ рдкрд░ рдЗрд╕ рдкреНрд░реАрд▓реЗрд░реЗрдЬрд╝ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ред рдХреГрдкрдпрд╛ рдкреБрди: рдЦреЛрд▓реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдФрд░ рдХреБрдЫ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ?

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

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

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

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

miljan-aleksic picture miljan-aleksic  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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