Storybook: рддреНрд░реБрдЯрд┐: рдирд┐рд░реНрдпрд╛рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  78рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: storybookjs/storybook

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

рдирд┐рд░реНрдпрд╛рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ

рд╕рдВрджрд░реНрдн рддреНрд░реБрдЯрд┐: рдирд┐рд░реНрдпрд╛рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ
рд╡рд╕реНрддреБ рдкрд░ред(http://localhost:6006/static/preview.bundle.js:43176:23)
__webpack_require__ рдкрд░ (http://localhost:6006/static/preview.bundle.js:679:30)
fn рдкрд░ (http://localhost:6006/static/preview.bundle.js:89:20)
рд╡рд╕реНрддреБ рдкрд░ред(http://localhost:6006/static/preview.bundle.js:43132:76)
рд╡рд╕реНрддреБ рдкрд░ред(http://localhost:6006/static/preview.bundle.js:43142:30)
__webpack_require__ рдкрд░ (http://localhost:6006/static/preview.bundle.js:679:30)
fn рдкрд░ (http://localhost:6006/static/preview.bundle.js:89:20)
рд▓реЛрдбрд╕реНрдЯреЛрд░реАрдЬрд╝ рдкрд░ (http://localhost:6006/static/preview.bundle.js:40160:3)
ConfigApi._renderMain рдкрд░ (http://localhost:6006/static/preview.bundle.js:41134:20)
рд░реЗрдВрдбрд░ рдкрд░ (http://localhost:6006/static/preview.bundle.js:41092:17)
ConfigApi.configure рдкрд░ (http://localhost:6006/static/preview.bundle.js:41117:9)
рд╡рд╕реНрддреБ рдкрд░ред(http://localhost:6006/static/preview.bundle.js:40164:68)
Object.defineProperty.value рдкрд░ (http://localhost:6006/static/preview.bundle.js:40165:30)
__webpack_require__ рдкрд░ (http://localhost:6006/static/preview.bundle.js:679:30)
fn рдкрд░ (http://localhost:6006/static/preview.bundle.js:89:20)
Object.window.STORYBOOK_REACT_CLASSES рдкрд░ (http://localhost:6006/static/preview.bundle.js:38867:18)
__webpack_require__ рдкрд░ (http://localhost:6006/static/preview.bundle.js:679:30)
http://localhost:6006/static/preview.bundle.js:725:39 . рдкрд░
http://localhost:6006/static/preview.bundle.js:728:10 . рдкрд░

рд╡рд╣ рддреНрд░реБрдЯрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдФрд░ рдЬрдм рдореИрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдХреЗ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдкрд░ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ...
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдореЗрд░рд╛ рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЬреЛ рдХреБрдЫ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рд╡рд╣ __ рдирд┐рд░реНрдпрд╛рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ__ (рд╕реНрдЯреИрдХрдЯреНрд░реИрдХ рдХреА рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝реА рдХреЗ рд╕рд╛рде) рдбреАрдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдЯреАрдПрд╕рд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

//tsconfig.json
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "jsx": "react",
    "declaration": true,
    "sourceMap": true,
    "outDir": "./dist",
    "esModuleInterop": true
  },
  "include": [
    "./src/**/*.tsx"
  ],
  "exclude": [
    "node_modules"
  ]
}

рдФрд░ рдлрд┐рд░ рд╕рдВрдХрд▓рд┐рдд рдЬреЗрдПрд╕ рдХреЛ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ред

//index.stories.jsx
import React from 'react';
import { storiesOf } from '@storybook/react';
import { action } from '@storybook/addon-actions';

import { MatrixEffect } from '../dist/index';

storiesOf('MatrixEffect', module)
  .add('100x100', () => 
    <MatrixEffect height={100} width={100} />
  );

рд╕рдВрд╕реНрдХрд░рдг

  • @storybook/react 3.4.0
  • @storybook/addon-actions 3.4.0
  • babel-core 6.26.0
  • react 16.3.0

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

babel / webpack compatibility with other tools has workaround high priority typescript

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

.babelrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реА рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ tsconfig рдлрд╝рд╛рдЗрд▓ рдХреЛ commonjs рд╕рдВрдЧрдд рдореЙрдбреНрдпреВрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ рдЙрдЪрд┐рдд рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

{
    "env": {
        "test": {
            "plugins": ["instanbul"]
        }
    },
    "plugins": ["@babel/plugin-syntax-dynamic-import", "@babel/plugin-transform-modules-commonjs"]
}

рдореЗрд░реА .babelrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣реА рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА tsconfig рдлрд╝рд╛рдЗрд▓ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред

"@babel/core" "^ 7.1.0"
"@storybook/react" ^4.0.0-alpha.2"
"react" "^16.4.0"

рдиреЛрдЯ: рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ https://babeljs.io/docs/en/next/plugins#modules

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

рдореБрдЭреЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ export 'MatrixEffect' was not found in '../dist/index' рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рджреЗ рдиреЛрдб рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рд╣реИрдВ: https://github.com/storybooks/storybook/issues/3270

рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ ...

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ .js рд╕реЗ .ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ? (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ dist рд╕реЗ рдХреНрдпреЛрдВ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ)

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реНрдЯреЛрд░реАрдмреБрдХ webpack.config рдореЗрдВ .ts / .tsx рдХреЛ resolve.extensions рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП?

@ рдЗрдЧреЛрд░-рдбреАрд╡реА рдирд╣реАрдВ, рдореИрдВ рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╡реИрд╕реЗ рднреА, рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ( variable рд╕реЗ Variable ) рдмрджрд▓рдирд╛, рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

рдореИрдВрдиреЗ .storybook рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ webpack.config.js рд╕реЗ рдмреЗрдмреЗрд▓ рд▓реЛрдбрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЕрдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред

рдореИрдВ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореБрдЭреЗ exports is not defined рдорд┐рд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдореБрдЭреЗ `"рдирд┐рд░реНрдпрд╛рдд 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ' ('[рдХрдВрдкреЛрдиреЗрдВрдЯрдирд╛рдо]' рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) '@ [рдирд╛рдорд╕реНрдерд╛рди]/[ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо]'"

  • рд▓рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
  • рд╕реНрдЯреЛрд░реАрдмреБрдХ 3.4.7
  • рдореЗрд░реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдЖрдВрддрд░рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ
  • рдЕрдЧрд░ рдореИрдВ project/packages рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ
  • рдореИрдВ рдЕрдкрдиреА рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреИрдХреЗрдЬ рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп-рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЖрдВрддрд░рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ package.json рдореБрдЦреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЧреИрд░-рдирд┐рд░реНрдорд┐рдд рд╕реНрд░реЛрдд рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рддреЛ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ рдФрд░ cjs рдХреЛ es рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛, рдпрд╛ рдХреБрдЫ рдФрд░ ...

рдореЗрд░рд╛ рдлрд┐рдХреНрд╕

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдЕрдкрдирд╛ package.json "рдореЙрдбреНрдпреВрд▓" рдлрд╝реАрд▓реНрдб рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдмрд┐рд▓реНрдб рдХреЗ ES рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрднреА рднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╕реАрдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреАрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ ЁЯд╖ЁЯП╜тАНтЩВя╕П

рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП v4.0.0-alpha.20 рдореЗрдВ рдмреЗрдмреЗрд▓ 7.0.0 . рдХреЗ рд╕рд╛рде рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдпрд╣рд╛рдБ рд╡рд╣реА @tonyред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдлреНрд▓реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ryanflorence рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд▓рд░реНрди рд╕реЗрдЯрдЕрдк рдФрд░ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдореБрджреНрджрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рдпреВрдЖрдИ-рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдХреЗ рдирд┐рд░реНрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк "module" field that pointed to the ES module version of my builds, adding that back in makes everything work again. . рдХрд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

.babelrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реА рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ tsconfig рдлрд╝рд╛рдЗрд▓ рдХреЛ commonjs рд╕рдВрдЧрдд рдореЙрдбреНрдпреВрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ рдЙрдЪрд┐рдд рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

{
    "env": {
        "test": {
            "plugins": ["instanbul"]
        }
    },
    "plugins": ["@babel/plugin-syntax-dynamic-import", "@babel/plugin-transform-modules-commonjs"]
}

рдореЗрд░реА .babelrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣реА рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА tsconfig рдлрд╝рд╛рдЗрд▓ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред

"@babel/core" "^ 7.1.0"
"@storybook/react" ^4.0.0-alpha.2"
"react" "^16.4.0"

рдиреЛрдЯ: рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ https://babeljs.io/docs/en/next/plugins#modules

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ 4.0.0.alpha рдореЗрдВ рдмреЗрдмреЗрд▓-рд▓реЛрдбрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд▓ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реБрдИ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд░реНрд╡рд░ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрдкрдХреЗ рдХреЙрдордирдЬ рдХрдВрдкрд╛рдЗрд▓ (рдкреИрдХреЗрдЬ, рд╡рд░реНрдХрд╕реНрдкреЗрд╕) рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
https://github.com/storybooks/storybook/blob/b2b73596f9dd97b4ba8c03340bd36f868e836772/lib/core/src/server/config/utils.js#L3

рдореЗрд░реЗ рд▓рд┐рдП, рдПрдХ рдХрд╕реНрдЯрдо webpack.dev.js рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд▓рдЧрдЗрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдПрдХ рдлрд┐рдХреНрд╕ рд╣реИ:

https://github.com/psychobolt/react-rollup-boilerplate/blob/d9cb9179cb7c00baab486646c504110bf7e2f50a/.storybook/webpack.config.js#L7

// exclude 'babel-loader' so we can override it later
...defaultConfig.module.rules.filter(rule => !(
    (rule.use && rule.use.length && rule.use.find(({ loader }) => loader === 'babel-loader'))
)),

https://github.com/psychobolt/react-rollup-boilerplate/blob/d9cb9179cb7c00baab486646c504110bf7e2f50a/.storybook/webpack.config.js#L11

{
  test: /\.jsx?$/,
  include: require('path').resolve('./'),
  exclude: /(node_modules|dist)/, // exclude any commonjs files
  loader: 'babel-loader',
},

include рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рднреА рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

@psychobolt рдЬреЛ рдХрд╣ рд░рд╣рд╛ рд╣реИ рд╡рд╣ 100% рд╕рд╣реА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдореЛрдиреЛрд░реЗрдкреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рди рд╣реЛред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ include: includePaths, рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдпрд╣ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдЧрдд рдкрд░ рдХреНрдпрд╛ рд╣реИ ..

рдЗрд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЕрдЪреНрдЫрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ?

рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рднреА рдЕрдбрд╝ рдЧрдП рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд▓рдбрд╝рдиреЗ рдореЗрдВ рдЖрдзреЗ рджрд┐рди рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред рдореИрдВ

@cilice рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛?

@0nn0 https://github.com/storybooks/storybook/issues/3346#issuecomment-425516669 рдЗрд╕ рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ :)

рдореИрдВ Stotybook-4.1.4, Lerna рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рд░рд┐рдПрдХреНрдЯ 16.7.0, рдкреНрд▓реЗрди JS рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рд╕реНрдЯреЛрд░реАрдмреБрдХ-4.0.12 . рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ 4.1.4 рдкрд░ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдереА, рдореИрдВ 4.0.10 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдХреЛрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ) рдмреЗрдмреЗрд▓-рд╡реЗрдмрдкреИрдХ

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

@psychobolt рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдзрдиреНрдпрд╡рд╛рджред

рджреЗрдЦреЗрдВ https://github.com/storybooks/storybook/issues/3346#issuecomment -425516669

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЪрд▓рд╛рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛:

npm i react-scripts -D

@skeet рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреНрдпреЛрдВ рдерд╛

info => Using base config because react-scripts is not installed.
info => Using default webpack setup based on "create-react-app".
info => Using base config because react-scripts is not installed.

рддреЛ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдм рдпрд╣ рдХрд╣рддрд╛ рд╣реИ

info => Loading create-react-app config.
info => Using default webpack setup based on "create-react-app".
info => Loading create-react-app config.

рд╣рдореЗрдВ рдХрдИ рдмрд╛рд░ exports is not defined рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ рдФрд░ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреВрд╕рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдмреИрдмреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди, рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЧреМрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреЗрдПрд╕ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХреГрдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рдкреВрд░реНрдг рдкрде рдкрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ (рдиреАрдЪреЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ console.log() рд╣реИ):

{
  test: /\.(mjs|jsx?)$/,
  use: [
    {
      loader: 'babel-loader',
      options: {
        cacheDirectory: '.cache/storybook',
        presets: [
          [
            '@babel/preset-env',
            { shippedProposals: true, useBuiltIns: 'usage' }
          ],
          '@babel/preset-react',
          '@babel/preset-flow'
        ],
        plugins: [
          'babel-plugin-macros',
          '@babel/plugin-proposal-class-properties',
          [
            'babel-plugin-react-docgen',
            { DOC_GEN_COLLECTION_NAME: 'STORYBOOK_REACT_CLASSES' }
          ]
        ]
      }
    }
  ],
  include: ['/Users/matt.hinchliffe/Project/'],
  exclude: ['/Users/matt.hinchliffe/Project/node_modules']
}

рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ exclude рд╕рдВрдкрддреНрддрд┐ рдПрдХ RegExp рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ! рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ node_modules рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдПрдХ RegExp ( /node_modules/ ) рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ - рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛!

рдпрд╣ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ - рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ useBuiltins рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ $ preset-env core-js рдкреЙрд▓реАрдлрд╝рд┐рд▓реНрд╕ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ ( useBuiltins рд╡рд┐рдХрд▓реНрдк рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рдХрд░) рд░рдирдЯрд╛рдЗрдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред)

рддреЛ рдЦреЗрд▓ рдореЗрдВ рдХреБрдЫ рдЕрд▓рдЧ рдореБрджреНрджреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ:

  1. node_modules рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмреЗрдмреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  2. useBuiltins рд╡рд┐рдХрд▓реНрдк рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ core-js рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://github.com/babel/babel/issues/7463 рдФрд░ https:// github.com/babel/babel/issues/9187)
  3. рдпрджрд┐ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ) рддреЛ рдЖрдкрдХреЛ рдмрд┐рдВрджреБ 1 рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП!

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореМрдЬреВрджрд╛ рдмрд╣рд┐рд╖реНрдХреГрдд рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ !

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдХрдо рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рдмрдирд╛рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдЖ рддреЛ рдореИрдВ рдмрд╛рдмреЗрд▓ рдХреЗ рд╕рд╛рде рдорд╛рдорд▓рд╛ рджрд░реНрдЬ рдХрд░рд╛рдКрдВрдЧрд╛ред

https://github.com/i-like-robots/broken-webpack-bundle-test-case

рд╣рдо рд╕реНрдЯреЛрд░реАрдмреБрдХ + рд▓рд░реНрди + рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ @i-like-robots рдХреЛ @psychobolt рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдирд╛:

module.exports = (baseConfig, env, config) => {
    config.module.rules = config.module.rules.filter(rule => !(
        (rule.use && rule.use.length && rule.use.find(({ loader }) => loader === 'babel-loader'))
    ));
    config.module.rules.push({
        test: /\.(ts|tsx)$/,
        loader: require.resolve('babel-loader'),
        options: {
            sourceType: 'unambiguous',
            presets: [['react-app', { flow: false, typescript: true }]],
        },

    });
    config.resolve.extensions.push('.ts', '.tsx');
    return config;
};

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрдм рдЖрд░рдпреВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ (рд╕рдВрднрд╡рддрдГ .babelrc рдХреЗ рдмреАрдЪ create-react-app рдХреЗ рд╕реЗрдЯрдЕрдк рдФрд░ рдЗрд╕ рдПрдХ рдХреЗ рдмреАрдЪ рд╕рдВрдШрд░реНрд╖ рдореЗрдВ?)

рдореИрдВ .babelrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:

"sourceType": "unambiguous"

рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА: https://babeljs.io/docs/en/options#sourcetype
рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ Babel 7 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИред

рд▓реЛрдЧреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдЗрд╕ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ!) - рдпрд╣рд╛рдБ рдореЗрд░реЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧ рд╕реЗ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ:

  const babelLoader = storybookBaseConfig.module.rules[0];
  babelLoader.exclude.push(
    path.resolve('./lib/components/node_modules'),
    /* etc */
  );

@tmeasday рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╛рдиреА рдЙрд╕ рдХреЛрдб рдХреЛ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдП?

рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХрдорд╛рд▓ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддреНрд░реБрдЯрд┐ рд░реБрдХ-рд░реБрдХ рдХрд░ рдФрд░ рднрдпрд╛рдирдХ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдХреЛрдИ рддреБрдХ рдпрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рд╣реЛрдиреЗ рд▓рдЧреЗрдЧреАред рдореИрдВ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдзрд░-рдЙрдзрд░ рдЙрдкрджреНрд░рд╡ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЙрдЫрд╛рд▓ рджреВрдВрдЧрд╛, рд╕рдм рдХреБрдЫ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдм рдПрдХ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрднреА рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред

рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ рдЬреЛ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рд╢реЛрд╕реНрдЯреЙрдкрд░ рд╣реИред

рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд╛рд▓реА рдПрдХ .storybook/weback.config.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛:

const path = require('path');

// Export a function. Accept the base config as the only param.
module.exports = async ({ config, mode }) => {
    // `mode` has a value of 'DEVELOPMENT' or 'PRODUCTION'
    // You can change the configuration based on that.
    // 'PRODUCTION' is used when building the static version of storybook.

    config.module.rules[0].use[0].options.sourceType = "unambiguous";

    return config;
};

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ sourceType рдмреЗрдмреЗрд▓ рдореБрджреНрджреЗ рдкрд░ рдЙрдмрд▓рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ .babelrc рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ (рдЬреИрд╕рд╛ рдХрд┐ @ 0nn0 рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдкреВрд░реНрдг рдмреЗрдмреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред

@JasonTheAdms рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ .storybook/webpack.config.js рдореЗрдВ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд┐рдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрдВрджрд░ node_modules рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ (рдЬреИрд╕реЗ ./lib/components/node_modules ) рдмреЗрдмрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИрдВред рд╡реЗ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рдПрдирдкреАрдПрдо рдХреЛ рднреЗрдЬ рджреА рдЧрдИ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмреЗрдмрд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗрд╡рд▓ babel-loader рдХреЛ рдмрддрд╛рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд┐рд╕реА рднреА node_modules рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдХрд▓рд┐рдд рди рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ ./node_modules рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ node_modules рдХреЗ рдЕрдВрджрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ ред рдЗрд╕рд▓рд┐рдП рдореИрдВ exclude рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдкрде рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВред

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

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

@skeet рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (https://github.com/storybooks/storybook/issues/3346#issuecomment-459308703) рд╕рдорд╕реНрдпрд╛ рддрдм рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ (рд╕рд╣рдХрд░реНрдореА рдпрд╛ рджреЗрд╡ рдирд╣реАрдВ) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред .

module рдлрд╝реАрд▓реНрдб рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ package.json рдореЗрдВ рдбрд╛рд▓рдХрд░ @ryanflorence рдХреЗ рдлрд┐рдХреНрд╕ (https://github.com/storybooks/storybook/issues/3346#issuecomment-415982589) рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред

   main: "dist/index.js",
+  module: "dist/index.js",

@tmeasday рд╕рдордЭ рдЧрдпрд╛ред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдкрдирд╛ рд╕рд┐рд░ рд▓рдкреЗрдЯрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐, рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _do_ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрдЪреНрдЪреЗ рдХреЛ node_modules рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реАрдВ рдкрд░ рдореИрдВ рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @skeet рдХрд╛ рд╕реБрдЭрд╛рд╡, рдЬреИрд╕рд╛ рдХрд┐ @jcousins-ynap рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдЙрдк-рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП (рдпрд╛рдиреА рдЙрдирдХреЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ) рдкрд░ рдпрд╣ рдзрд╛рд░рдгрд╛ рдмрдирд╛рдПред рдЕрдЧрд░ рдХреЛрдИ рдЙрдк-рдореЙрдбреНрдпреВрд▓ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рддреЛ рд╕рдВрднрд╡рддрдГ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреИрдХреЗрдЬ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдХреЙрдордирдЬреЗрдПрд╕ рдмрдирд╛рдо рдИрдПрд╕ 6 рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдмреЗрд▓ + рд╡реЗрдмрдкреИрдХ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЙрдк-рдкреИрдХреЗрдЬ рдХреЗ package.json рдореЗрдВ "module": рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрдмреЗрд▓ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ ES6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИред

рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣рд╛рдВ рднреА рдЭрдВрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реНрдЯреЛрд░реАрдмреБрдХ 5, рдмреИрдмреЗрд▓ 7.4 (рдХреЛрд░-рдЬреЗрдПрд╕ 3 рдХреЗ рд╕рд╛рде), рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.4 рдФрд░ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдиреЗ 100% рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдРрд╕рд╛ рд╣реБрдЖ рдЬреЛ рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ред рдореЛрдиреЛрд░рдкреЛрд╕ рдХреА рдкреНрд░рдХреГрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдкреИрдХреЗрдЬ рджреВрд╕рд░реЗ рдкреИрдХреЗрдЬ рд╕реЗ "рдирд┐рд░реНрдорд┐рдд" рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдирд╣реАрдВ, рдЬреЛ рдХрд┐ рдПрдирдкреАрдПрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА/рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдкрд░рдд рдореЗрдВ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдХрд╛рдлреА рдкрд░реЗрд╢рд╛рди рд╣реИред рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡реЗрдмрдкреИрдХ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬреЛ lib/ рд╕реЗ src/ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛, рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╕ рдХрд╛рдо рдХрд┐рдпрд╛, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╕рднреА рдХреЛрдб рдЕрдм ESNext/ESM рд╣реИ!

рдпрд╣рд╛рдБ рд╣реИрдХ рд╣реИ:

glob.sync(path.join(__dirname, '../packages/*/package.json')).forEach(filePath => {
  const { name } = require(filePath);

  config.resolve.alias[`${name}$`] = `${name}/src`;
  config.resolve.alias[`${name}/lib`] = `${name}/src`;
});

рдФрд░ рдмреИрдмреЗрд▓ + рдЯреАрдПрд╕ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рдмреЗрдмреЗрд▓-рд▓реЛрдбрд░ рдХреЛ рдореНрдпреВрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рд╕реНрдерд╛рдиреАрдп рдмреИрдмреЗрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рд╕рд╛рде 100% рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЕрдкрдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╣реИред

const babelConfig = config.module.rules[0];

// Replace Flow with TypeScript
babelConfig.test = /\.(j|t)sx?$/;
babelConfig.exclude.push(/node_modules/);
babelConfig.use[0].options.sourceType = 'unambiguous';
babelConfig.use[0].options.presets[2] = require.resolve('@babel/preset-typescript');
babelConfig.use.unshift({ loader: require.resolve('react-docgen-typescript-loader') });

config.resolve.extensions.push('.ts', '.tsx');

module рдлрд╝реАрд▓реНрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред
рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдореЗрдВ @babel/plugin-transform-modules-commonjs рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓реА, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ: https://github.com/storybooks/storybook/issues/3346#issuecomment -423719241

@elado рдХрд╛рдо!

рдЗрд╕рд╕реЗ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрддрдмреНрдзред рдкрд┐рдЫрд▓реЗ ~ 2 рджрд┐рдиреЛрдВ рдореЗрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рд╕рднреА рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореЗрд░реЗ рдЕрдкрдиреЗ рдХреБрдЫ рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдХреЛрдИ рднреА рд╕рдлрд▓ рдирд╣реАрдВ рдерд╛

рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

WARNING in ./packages/one/src/index.jsx 2:289-293
"export 'default' (imported as 'Two') was not found in '@my-monorepo/two'
 @ ./packages/one/src/index.stories.jsx
 @ ./packages sync \.stories\.jsx$
 @ ./.storybook/config.js
 @ multi ./node_modules/@storybook/core/dist/server/common/polyfills.js ./node_modules/@storybook/core/dist/server/preview/globals.js ./.storybook/config.js

...рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдФрд░...

index.js:49 ReferenceError: exports is not defined
    at react-is.development.js:18
    at Module../packages/one/node_modules/react-is/cjs/react-is.development.js (react-is.development.js:226)
    at __webpack_require__ (bootstrap:785)
    at fn (bootstrap:150)
    at Object../packages/one/node_modules/react-is/index.js (index.js:6)
    at __webpack_require__ (bootstrap:785)
    at fn (bootstrap:150)
    at Object../packages/one/node_modules/prop-types/index.js (index.js:9)
    at __webpack_require__ (bootstrap:785)
    at fn (bootstrap:150)

...рд╕реНрдЯреЛрд░реАрдмреБрдХ ui (http://localhost:9001) рджреЗрдЦрддреЗ рд╕рдордпред рдореЗрд░реА рдХрд╣рд╛рдирд┐рдпрд╛рдВ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред

fwiw, рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк рд╣реИ:

тФЬтФАтФА .storybook/
тФВ   тФЬтФАтФА addons.js
тФВ   тФЬтФАтФА config.js
тФВ   тФФтФАтФА webpack.config.js
тФВ
тФЬтФАтФА packages/
тФВ   тФЬтФАтФА one
тФВ   тФВ   тФЬтФАтФА src/
тФВ   тФВ   тФВ   тФЬтФАтФА index.jsx
тФВ   тФВ   тФВ   тФЬтФАтФА index.stories.jsx
тФВ   тФВ   тФВ   тФФтФАтФА index.test.jsx
тФВ   тФВ   тФЬтФАтФА dist/
тФВ   тФВ   тФВ   тФЬтФАтФА index.js
тФВ   тФВ   тФВ   тФЬтФАтФА index.stories.js
тФВ   тФВ   тФВ   тФФтФАтФА index.test.js
тФВ   тФВ   тФФтФАтФА package.json
тФВ   тФВ
тФВ   тФФтФАтФА two
тФВ       тФЬтФАтФА src/
тФВ       тФВ   тФЬтФАтФА index.jsx
тФВ       тФВ   тФЬтФАтФА index.stories.jsx
тФВ       тФВ   тФФтФАтФА index.test.jsx
тФВ       тФЬтФАтФА dist/
тФВ       тФВ   тФЬтФАтФА index.js
тФВ       тФВ   тФЬтФАтФА index.stories.js
тФВ       тФВ   тФФтФАтФА index.test.js
тФВ       тФФтФАтФА package.json
тФВ
тФЬтФАтФА .babelrc
тФЬтФАтФА .eslintrc.js
тФЬтФАтФА jest.config.js
тФЬтФАтФА lerna.json
тФЬтФАтФА npm-shrinkwrap.json
тФФтФАтФА package.json


Addons.js

import '@storybook/addon-knobs/register';
import '@storybook/addon-backgrounds/register';
import '@storybook/addon-storysource/register';


config.js

import { configure } from '@storybook/react';

const req = require.context('../packages', true, /.stories.jsx$/);

function loadStories(){
    req.keys().forEach(filename => req(filename));
}

configure(loadStories, module);


webpack.config.js

module.exports = {
    module: {
        rules: [
            {
                test: /\.stories\.jsx?$/,
                loaders: [require.resolve('@storybook/addon-storysource/loader')],
                enforce: 'pre'
            }
        ]
    }
};


.рдмреЗрдмреЗрд▓рдЖрд░рд╕реА

{
    "presets": ["@babel/preset-env", "@babel/preset-react"],
    "plugins": [
        "@babel/plugin-transform-modules-commonjs"
    ]
}


package.json (рд░реВрдЯ)

{
  "name": "my-monorepo",
  "description": "monorepo containing POC react ui component library",
  "version": "1.0.0",
  "author": "me",
  "scripts": {
    "postinstall": "npm run bootstrap",
    "bootstrap": "lerna bootstrap",
    "storybook": "npm run build && start-storybook --port 9001 --config-dir .storybook --ci",
    "test": "npm run lint && npm run test:unit",
    "test:unit": "npm run build && NODE_ENV=development BABEL_ENV=test jest --no-watchman",
    "test:unit:watch": "npm run test:unit -- --watch",
    "test:unit:snapshot": "npm run test:unit -- --updateSnapshot",
    "lint": "eslint . --ext .js,.jsx --ignore-path .gitignore",
    "lint:fix": "npm run lint -- --fix",
    "build": "npm run clean && lerna run build",
    "clean": "lerna run clean",
    "clean:modules": "lerna clean --yes",
    "release": "npm run build && lerna publish",
    "start": "npm run storybook"
  },
  "dependencies": {},
  "devDependencies": {
    "@babel/cli": "^7.5.5",
    "@babel/core": "^7.5.5",
    "@babel/plugin-transform-modules-commonjs": "^7.5.0",
    "@babel/preset-env": "^7.5.5",
    "@babel/preset-react": "^7.0.0",
    "@storybook/addon-backgrounds": "^5.1.9",
    "@storybook/addon-knobs": "^5.1.9",
    "@storybook/addon-storysource": "^5.1.9",
    "@storybook/react": "^5.1.9",
    "babel-jest": "^22.4.1",
    "babel-loader": "^8.0.6",
    "enzyme": "^3.10.0",
    "enzyme-adapter-react-16": "^1.14.0",
    "enzyme-to-json": "^3.3.5",
    "eslint": "^4.18.2",
    "eslint-config-particle": "^2.2.1",
    "eslint-plugin-react": "^7.14.2",
    "jest": "^22.4.2",
    "jest-styled-components": "^6.3.3",
    "lerna": "^3.15.0",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "styled-components": "^4.3.2"
  }
}


рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди (рдПрдХ)

{
  "name": "@my-monorepo/one",
  "description": "react component one",
  "version": "1.1.0",
  "author": "me",
  "main": "dist/index.js",
  "scripts": {
    "test": "cd ../../ && npm test",
    "build": "babel ./src --out-dir ./dist --ignore test.jsx,stories.jsx --config-file ../../.babelrc",
    "clean": "rm -rf ./dist"
  },
  "peerDependencies": {
    "react": ">=15",
    "styled-components": ">=3"
  },
  "dependencies": {
    "@my-monorepo/two": "^1.1.0",
    "create-react-class": "^15.6.3",
    "prop-types": "^15.7.2"
  }
}


рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди (рджреЛ)

{
  "name": "@my-monorepo/two",
  "description": "react component two",
  "version": "1.1.0",
  "author": "me",
  "main": "dist/index.js",
  "scripts": {
    "test": "cd ../../ && npm test",
    "build": "babel ./src --out-dir ./dist --ignore test.jsx,stories.jsx --config-file ../../.babelrc",
    "clean": "rm -rf ./dist"
  },
  "peerDependencies": {
    "react": ">=15"
  },
  "dependencies": {
    "create-react-class": "^15.6.3",
    "prop-types": "^15.7.2"
  }
}

рдШрдЯрдХреЛрдВ рдХреЗ рднреАрддрд░ рд╕рдм рдХреБрдЫ ./src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ESM- рд╢реИрд▓реА рдХреЗ рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред @my-monorepo/one @my-monorepo/two рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрдВрд╕реНрдЯрд╛рд▓-рдЯрд╛рдЗрдо рдкрд░, рд▓рд░реНрди _рд▓рд┐рдВрдХреНрд╕_ рдирд┐рд░реНрднрд░рддрд╛ ( lerna bootstrap рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рд╕рднреА рдкреИрдХреЗрдЬ рдмреЗрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ - рд╢реАрд░реНрд╖-рд╕реНрддрд░ npm run build рдХрдорд╛рдВрдб рд╡реНрдпрдХреНрддрд┐рдЧрдд ./dist рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред npm start рдкрд╣рд▓реЗ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

v3 рдХреЗ рддрд╣рдд рдпрд╣ рд╕рдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╣рд▓реЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рдерд╛ред рдореБрдЭреЗ _why_ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдорд┐рд▓рддрд╛ рд╣реИ - package.json рдореЗрдВ "main: "dist/index.js" рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╕реНрдЯреЛрд░реАрдмреБрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧреА рдХрд┐ @my-monorepo/two рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ ( @my-monorepon/one рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЗрд╕ рдкрд░)ред рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛, рдореИрдВ рд╕реЗрдЯрдЕрдк рд╕реЗ рдЦреБрд╢ рдерд╛ред

рдПрдХ рдмрд╛рдд рдореИрдВрдиреЗ рджреЗрдЦреА: рдЬрдм рдореИрдВрдиреЗ рдШрдЯрдХреЛрдВ рдХреА package.json рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ "module": "src/index.jsx" рдЬреЛрдбрд╝рд╛, рддреЛ рдЙрд╕реЗ рд╡реЗрдмрдкреИрдХ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛ рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб ReferenceError: exports is not defined рдмрдирд╛ рд░рд╣рд╛ред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдХреЛрдИ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реАрдмреБрдХ v3 рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдирдЬрд░ рд░рдЦреВрдВрдЧрд╛ рдФрд░ рдЦреБрд╢реА рд╕реЗ рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛: рдкреНрд░рд╛рд░реНрдердирд╛ :: +1:

@ рднрджреНрджреА рдЖрд╡рд╛рдЬрд╝реЗрдВ рдЬреИрд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдЬрдирди рд░реЗрдкреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдореИрдВ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдБ?

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

@busticated рдореБрдЭреЗ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ-рд░реЗрдкреНрд░реЛ-рд░реЗрдкреЛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА

рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐:

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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ ReferenceError: exports is not defined рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@ndelangen рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рд░реЗрдкреЛ рд░реЗрдкреЛ рд╣реИ

https://github.com/busticated/storybook-monorepo-repo

рдЖрдк рдмрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

  1. git clone
  2. npm i && npm start

...рдФрд░ рджреЗрдЦреЗрдВ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ред рджреЗрд╡ рдЙрдкрдХрд░рдг рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЖрдкрдХреЛ exports рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рдиреЛрдЯреНрд╕ рдХреА рдЬреЛрдбрд╝реА:

  • рдкреВрд░реНрд╡рдкреНрд░рдХрд╛рд╢рд┐рдд рдмрд┐рд▓реНрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm run build рдЪрд▓рд╛рдПрдВ
  • рдЗрд╕реЗ рдиреЛрдб/рдПрдирдкреАрдПрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП +/- рдХреБрдЫ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рд╢реЛрд░ (fwiw, рдореИрдВрдиреЗ w/рджрд┐рди рдХреА рдиреМрдХрд░реА рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП node@8 рдФрд░ npm@5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛)
  • рдЕрдВрддрд┐рдо рджреЛ рдХрдорд┐рдЯ "module": "src/index.jsx" рдлрд╝реАрд▓реНрдб рдХреЛ packages/*/packge.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрд╡рд╡рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдореВрд▓ export 'default' (imported as 'Two') was not found рд╡реЗрдмрдкреИрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рдореИрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛

рдореИрдВ рд▓рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЬ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ libraryTarget: 'commonjs2' рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП рд╣реИрдВред @JasonTheAdams рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ babelrc { "sourceType": "unambiguous" } рдХреЗ рд╕рд╛рде @ 0nn0 рд╕рдорд╛рдзрд╛рди рдХрд╛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд░реВрдЯ рдореЗрдВ .babelrc рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрдЯрдЕрдк - рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ ЁЯШЙ(рд╕реНрдЯреЛрд░реАрдмреБрдХ: 5.1.10, рд▓рд░реНрди: 3.16.4, рд╡реЗрдмрдкреИрдХ: 4.39.1, рдмреИрдмреЗрд▓: 7.5.5)


рдлрд╝рд╛рдЗрд▓: _lerna_repo/.storybook/webpack.config.js_ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ

module.exports = async ({ config }) => {
  const [ mjsjsx ] = config.module.rules;
  const [ babelLoader ] = mjsjsx.use;

  babelLoader.options.sourceType = 'unambiguous'

  return config;
};

рдлрд╝рд╛рдЗрд▓: _lerna_repo/stories/index.stories.js_

import defaultExport, { namedExport } from '../packages/examplePackage' // works locally
// import defaultExport, { namedExport } from '<strong i="17">@examplePackage</strong>' // works installed
...

рдлрд╝рд╛рдЗрд▓: _lerna_repo/packages/examplePackage/package.json_

"name": "@examplePackage",
"version": "0.0.1",
"main": "./dist/index.js"
...

рдлрд╝рд╛рдЗрд▓: _lerna_repo/packages/examplePackage/dist/index.js_ - рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди

module.exports=function(e){var n={};function...

@ndelangen рдЙрдкрд░реЛрдХреНрдд рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

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

рдпрд╣ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рджреЛ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмреАрдЪ рдореЗрдВ рдлрдВрд╕рдиреЗ рдХрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 5.2 . рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрдп рд╣реИ?

рдореИрдВ 5.2.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╡ рдирд┐рд░реНрдорд┐рдд Lerna monorepo рдореЗрдВ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдРрд╕рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ: https://github.com/storybookjs/storybook/issues/3346#issuecomment -475437230

рдореИрдВрдиреЗ Storybook Webpack config node_modules "Lerna" packages рдореЗрдВ Babel рд╕рдВрдХрд▓рди рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрджреНрджрд╛ рдЕрднреА рднреА рд╡рд╣реАрдВ рд╣реИред

рдореИрдВ @idbartosz рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдВрдж рд╣реБрдЖред рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА @Lighttree рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ?

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреЗрдбрд╝ рдореЗрдВ рдЧрд╣рд░реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рд╣реИрдВ рдЬреИрд╕реЗ /lib/components/node_modules https://github.com/storybookjs/storybook/issues/3346#issuecomment -475437230 рдФрд░ рдмреЗрдмреЗрд▓-рд▓реЛрдбрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдЯреЛрд░реАрдмреБрдХ рд░реВрдЯ node_modules рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЙрди рд╕рднреА рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

https://github.com/storybookjs/storybook/blob/f7367b18ec7d6e077fba5b99da89233b63c4f280/lib/core/src/server/config/utils.js#L5 -L6

https://github.com/storybookjs/storybook/blob/f7367b18ec7d6e077fba5b99da89233b63c4f280/lib/core/src/server/common/babel-loader.js#L1 -L13

@shilman рдореБрдЭреЗ рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, react-motion рдореЗрдВ lerna рдореЛрдиреЛ-рд░реЗрдкреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВред
рдХреНрдпрд╛ @idbartosz рд╕рдорд╛рдзрд╛рди рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛?

@sayjeyhi рд╣рд╛рдБ, рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Storybook рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк monorepo рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ node_modules рди рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ */packages рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ monorepo рд╕рдВрдЧрдарди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ Storybook package рдХреЗ рд░реВрдк рдореЗрдВ Lerna packages рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдЬреАрддрд╛ рд╣реИ рдпрд╣ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ)

рддреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ .storybook/webpack.config.js рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИ:

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

// Export a function. Accept the base config as the only param.
module.exports = async ({ config, mode }) => {
    // `mode` has a value of 'DEVELOPMENT' or 'PRODUCTION'
    // You can change the configuration based on that.
    // 'PRODUCTION' is used when building the static version of storybook.
    // Make whatever fine-grained changes you need
    const babelLoader = config.module.rules[0];

    /**
     * Exclude pacakge's `node_modules` from Storybook babel processing.
     */
    glob.sync('./packages/*/node_modules').forEach(match => {
        babelLoader.exclude.push(path.resolve(match));
    });

    // Return the altered config
    return config;
};

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдп рджрд┐рдЦрд╛рдпрд╛ рд╣реИ- рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд░реЗрдкреНрд░реЛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?

https://github.com/storybookjs/storybook/issues/3346#issuecomment -514324312

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЧрд╛ред

рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣рд╛рдВ monorepo рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд╛рд▓рд╛ рд╣рд░ рдХреЛрдИ $#$1 lerna #$ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ monorepo рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ $#$ lerna $# рдХреЗ рдмрдЬрд╛рдп yarn workspaces рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред lerna рдФрд░ рд╕рдм рдХреБрдЫ storybook + typescript рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдЬреАрдм webpack рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд┐рдирд╛, рдЗрд╕реЗ рдмреЗрдмреЗрд▓ рдХреЗ рд╕рд╛рде рднреА рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк рдХреБрдЫ рд░реБрдЪрд┐ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ monorepo рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ storybook рдХреЗ рд╕рд╛рде рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ @busticated рдХреА рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ рдЧрд▓рдд package.json , рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@pixeleate

рдореИрдВ @busticated рдХреА рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЧрд▓рдд package.json рдореЗрдВ рд╣реИрдВ

рдХреНрдпрд╛ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рд░реЗрдкреЛ рд░рдирд┐рдВрдЧ рд╕реНрдЯреЛрд░реАрдмреБрдХ v3 рдХрд╛ _working_ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ https://github.com/storybookjs/storybook/issues/3346#issuecomment -513397002

@pixeleate рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдХрд╛рдордХрд╛рдЬреА рд░реЗрдкреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣рд╛рдВ monorepo рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд╛рд▓рд╛ рд╣рд░ рдХреЛрдИ $#$1 lerna #$ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ monorepo рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ $#$ lerna $# рдХреЗ рдмрдЬрд╛рдп yarn workspaces рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред lerna рдФрд░ рд╕рдм рдХреБрдЫ storybook + typescript рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдЬреАрдм webpack рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд┐рдирд╛, рдЗрд╕реЗ рдмреЗрдмреЗрд▓ рдХреЗ рд╕рд╛рде рднреА рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк рдХреБрдЫ рд░реБрдЪрд┐ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ monorepo рдПрдХ рдХрд╛рдордХрд╛рдЬреА storybook рдХреЗ рд╕рд╛рде рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ @busticated рдХреА рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рдХреБрдЫ @ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ рдЧрд▓рдд package.json рдореЗрдВ, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

babelConfig.exclude.push(/node_modules/); рдЪрд▓рд╛рддреЗ рд╕рдордп рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ start-storybook , рд▓реЗрдХрд┐рди рдореБрдЭреЗ exports is not defined рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ build-storybook ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: storybook-addon-jsx рдХреЛ рд╣рдЯрд╛рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

@busticated рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рдХреЛ рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЦреЛрд▓рд╛:
https://github.com/busticated/storybook-monorepo-repo/pull/1

рдХреБрдЫ рдЧрд▓рдд рдЖрдпрд╛рдд рдереЗ рдЬреЛ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдереЗред

@jacobrask рдореИрдВ рдЗрд╕реЗ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рдореВрд▓ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╣рд░ рдмрд░рдкрд╛рдПрдЧрд╛ред

@shilman рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЯрдХреНрдХрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@ndelangen

рдореИрдВрдиреЗ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рд╛

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

рдХреБрдЫ рдЧрд▓рдд рдЖрдпрд╛рдд рдереЗ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдереА

рдПрдЪрдПрдо рд╣рд╛рдВред рдореБрдЭреЗ eslint рд╕реЗрдЯ рдЕрдк рди рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддрд╛ рд╣реИ

рдЙрд╕ рд╕рдм рдиреЗ рдХрд╣рд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЦрд░рд╛рдм рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ @storybook/addon-backgrounds рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ - рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ master ( 1 , 2 , 3 , 4 ) рдкрд░ рдХрд┐рдпрд╛ рдерд╛ - рдПрдХрдорд╛рддреНрд░ рдмрдХрд╛рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВрдБ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣рд╛рдВ рдПрдХ рд╕рд╛рдл-рд╕реБрдерд░реА рд╢рд╛рдЦрд╛ рд╣реИ / рдХреЗрд╡рд▓ yarn рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди https://github.com/busticated/storybook-monorepo-repo/commit/4fb2cac0f05b65a5983f121b92a7c2d7438d8857

рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬрдбрд╝ рд╕реЗ рдЙрдЦрд╛рдбрд╝ рджреЗрдЧрд╛, рдЗрд╕рд╕реЗ рдХрдИ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

рдореЗрд░реЗ рдкреАрдЖрд░ рдореЗрдВ: https://github.com/storybookjs/storybook/pull/8822 рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ MULTIPLE node_modules рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред

рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╣рд╛рдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИ, рдореИрдВ рдЙрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдбрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд╣реА @shilman рд╣реИред рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ 6.0 рддрдХ рд░реЛрдХрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬрдбрд╝ рд╕реЗ рдЙрдЦрд╛рдбрд╝ рджреЗрдЧрд╛, рдЗрд╕рд╕реЗ рдХрдИ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ MULTIPLE рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ

рдХреНрдпрд╛ рдпрд╣реА рдореВрд▓ рдХрд╛рд░рдг рд╣реИ? рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрди рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ:

TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

... рдЬреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ ..? рдлрд┐рд░ рднреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдЬреЛ рдЖрдк рд╣рд░ рд╕рдордп рджреЗрдЦрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИ тАНтЩВ _/рдореБрдЭреЗ рдмреЗрдмреЗрд▓ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреА рд╕рд╛рдорд╛рдиреНрдп рджрд┐рд╢рд╛ рдореЗрдВ рднреНрд░реВрднрдВрдЧ_

рдореИрдВ рдЙрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдбрд░рддрд╛ рд╣реВрдБ рдЬреЛ рдПрдХ рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд╣реА @shilman рднреА рд╣реИред рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ 6.0 рддрдХ рд░реЛрдХрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдУрд╣ рд╣рд╛рдБ, рдореИрдВ рдЖрдкрдХреЛ рд╕реБрдирддрд╛ рд╣реВрдБ - рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рд╛рдорд╛рди рдХрднреА рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдФрд░ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдкрд░ рдЬреЛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж - рд╕реНрдЯреЛрд░реАрдмреБрдХ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ v3) рдПрдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХ рдЙрдкрдХрд░рдг рд╣реИ: рдкреНрд░рд╛рд░реНрдердирд╛ :: рдХреНрд▓реИрдк :: рдХреНрд▓реИрдк :: рдХреНрд▓реИрдк :: +1:

TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

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

  1. рдЕрдкрдиреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ ESM рдФрд░ CJS рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдФрд░ рдорд┐рд▓рд╛рдирд╛
  2. рдмреЗрдмреЗрд▓ рдИрдПрд╕рдПрдо рд╣реЗрд▓реНрдкрд░реНрд╕ рдХреЛ рд╕реАрдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ

рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмреИрдмреЗрд▓ рдХреЗ sourceType рдХреЛ "unambiguous" рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

https://github.com/i-like-robots/broken-webpack-bundle-test-case


рдЕрджреНрдпрддрди: рдореЗрд░реА рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рдКрдкрд░ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдзрд╛рд░ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдХрдИ рдореЛрдиреЛрд░реЗрдкреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

const excludePaths = [/node_modules/, /dist/]

module.exports = ({ config }) => {
  // Use real file paths for symlinked dependencies do avoid including them multiple times
  config.resolve.symlinks = true

  // HACK: extend existing JS rule to ensure all dependencies are correctly ignored
  // https://github.com/storybooks/storybook/issues/3346#issuecomment-459439438
  const jsRule = config.module.rules.find((rule) => rule.test.test('.jsx'))
  jsRule.exclude = excludePaths

  // HACK: Instruct Babel to check module type before injecting Core JS polyfills
  // https://github.com/i-like-robots/broken-webpack-bundle-test-case
  const babelConfig = jsRule.use.find(({ loader }) => loader === 'babel-loader')
  babelConfig.options.sourceType = 'unambiguous'

  // HACK: Ensure we only bundle one instance of React
  config.resolve.alias.react = require.resolve('react')

  return config
}

@ i-like-robots sourceType = 'unambiguous' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдХреНрдпрд╛ рд╣реИ?

рд╕рдорд╛рдзрд╛рди рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдореЛрдиреЛрд░реЗрдкреЛ рд╕рдорд░реНрдерди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ: https://github.com/storybookjs/storybook/pull/8822

(6.0.0 рд╕реБрд╡рд┐рдзрд╛)

рд╢рд╛рдпрдж рдЕрд╕рдВрдмрдВрдзрд┐рдд, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдХрд╕реНрдЯрдо babel.config.js рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдпрд╣ exports is not defined рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА, https://storybook.js.org/docs/configurations/custom-babel-config/ рдиреЗ рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╕рдВрдХрдЯред

@qrosmeli рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рддреБрдордиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛ рд▓рд┐рдпрд╛! рдореИрдВ

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

рдЖрдк рдЗрд╕ рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рдХреЛ @next NPM рдЯреИрдЧ рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

[рдЕрджреНрдпрддрди] - рд╣рдореЗрдВ рдЗрд╕ рдирд┐рдпрдо рд╕реЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЕрдиреНрдпрдерд╛ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛

рдореИрдВрдиреЗ рдЗрд╕ рдирд┐рдпрдо рдХреЛ Storybook main.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ

let rules = [{
  test: /\.(js|mjs|jsx|ts|tsx)$/,
  include: /dist/, //Include dist folder as well to parse using babel loader in order to resolve exports not defined error
  exclude: /node_modules/,
  loader: 'babel-loader',
  options: {
    presets: [
      ["@babel/preset-env", {
        modules: "commonjs"
      }]
    ]
  }
}]

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

  webpackFinal: config => {

    //Find eslint loader rule from webpack config
    let eslintRule = config.module.rules.find(rule => {
      if (rule && rule.use) {
        return rule.use.some(use => use.loader.match('eslint-loader'))
      }
    });

    //Exclude validations of dist folder contents
    eslintRule.exclude = /dist/;

    return {
      ...config,
      module: {
        rules: [
          ...rules,
          eslintRule,
          ...config.module.rules
        ]
      }
    }
  }

рдзрдиреНрдпрд╡рд╛рдж @ ashvin777 , рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдкрд▓рдХ:

рдЕрд░реЗ @aperkaz , рдореИрдВрдиреЗ node_modules рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реНрдЯреЛрд░реАрдмреБрдХ рджреЗрд╡ рдореЛрдб рдореЗрдВ рдареАрдХ рд╕реЗ рд▓реЙрдиреНрдЪ рд╣реЛ рд░рд╣реА рдереА рд▓реЗрдХрд┐рди рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрд╛рджрди рдореЛрдб рдореЗрдВ рдЯреВрдЯ рд░рд╣реА рдереАред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП node_modules рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЖрдк рдКрдкрд░ рдореЗрд░реА рдЕрджреНрдпрддрди рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдирд╡реАрдирддрдо рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди transform-es2015-modules-commonjs рд╕реЗ @babel/plugin-transform-modules-commonjs рдкрд░ babel.config.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ

module.exports = {
    presets: [['@babel/preset-env', { modules: false }], '@babel/preset-react'],
    plugins: [
        'transform-es2015-modules-commonjs',
        '@babel/plugin-proposal-class-properties'
    ]
};

рдЙрдкрд░рд╛рдВрдд

module.exports = {
    presets: [['@babel/preset-env', { modules: false }], '@babel/preset-react'],
    plugins: [
        '@babel/plugin-transform-modules-commonjs',
        '@babel/plugin-proposal-class-properties'
    ]
};
TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рджрд┐рди рдмрд┐рддрд╛рдпрд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА sourceType: 'unambigous' рдерд╛ред

рдореЗрд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП node_modules рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рдареАрдХ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдлрд╝рд╛рдЗрд▓ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди modules: 'cjs' рд╡рд┐рдХрд▓реНрдк рдХреЛ $#$ @babel/preset-env $#$ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдирд╛ рд╣реИред

рдореБрдЭреЗ @storybook/react@next рдХреЗ рд╕рд╛рде рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмреИрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди @babel/plugin-transform-modules-commonjs рдЬреЛрдбрд╝рдирд╛ рдерд╛, рдЬрдмрдХрд┐ debug: true рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде @babel/preset-env рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ... рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдИрдПрд╕рдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЦреЛ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рдХрд╣рд╛рдиреАрдкреБрд╕реНрддрд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реАрдЬреЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

:рдЯрд╛рдбрд╛: рдореЗрд░рд╛ .storybook/.babelrc : :рдЯрд╛рдбрд╛:

{
  "extends": "../.babelrc",
  "plugins": [
    "@babel/plugin-transform-modules-commonjs"
  ]
}

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

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

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

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

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

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

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