Storybook: core-js ^ 3.0์„ ์‚ฌ์šฉํ•  ๋•Œ Storybook v5๊ฐ€ ์ค‘๋‹จ๋จ

์— ๋งŒ๋“  2019๋…„ 03์›” 20์ผ  ยท  100์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: storybookjs/storybook

๋ฒ„๊ทธ ์„ค๋ช…
core-js ์„ ๋ฒ„์ „ 3์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ ์Šคํ† ๋ฆฌ ๋ถ์ด ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹ฌ๋ณผ ํด๋ฆฌ ํ•„์ด ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/storybooks/storybook/blob/0bdb2ca94e5ec732d84d3b330aa3b5bedfc534ec/lib/core/src/server/common/polyfills.js#L3

์žฌํ˜„ํ•˜๋ ค๋ฉด
๋™์ž‘์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„ :

  1. core-js ๋ฒ„์ „ 3.0 ์ด์ƒ ์„ค์น˜
  2. ์ด corejs: { version: 3 }, ์—์„œ @babel/env ์˜ต์…˜
  3. ์Šคํ† ๋ฆฌ ๋ถ ์„œ๋ฒ„ ์‹คํ–‰
  4. ์˜ค๋ฅ˜ ๊ด€์ฐฐ
ERROR in ./.storybook/config.js
Module not found: Error: Can't resolve 'core-js/modules/web.dom-collections.iterator' in '/Users/Work/react/.storybook'
 @ ./.storybook/config.js 3:0-55
 @ multi ./node_modules/@storybook/core/dist/server/common/polyfills.js ./node_modules/@storybook/core/dist/server/preview/globals.js ./.storybook/config.js (webpack)-hot-middleware/client.js?reload=true

์ฒด๊ณ„:

babel / webpack core dependencies has workaround high priority question / support

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋„์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ core-js @ 3 ์— ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ ํ•œ ์ตœ์‹  firebase๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
firebase๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ๋œ ์Šคํ† ๋ฆฌ ๋ถ์—์„œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ERROR in ./node_modules/@firebase/polyfill/dist/index.esm.js
Module not found: Error: Can't resolve 'core-js/features/array/find' in '/Users/jin/kinyapp/node_modules/@firebase/polyfill/dist'
 @ ./node_modules/@firebase/polyfill/dist/index.esm.js 3:0-37
 @ ./node_modules/firebase/app/dist/index.cjs.js
 @ ./src/firebase.js
 @ ./src/components/Login.js
 @ ./src/stories/index.js
 @ ./.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 ./node_modules/webpack-hot-middleware/client.js?reload=true

ERROR in ./node_modules/@firebase/polyfill/dist/index.esm.js
Module not found: Error: Can't resolve 'core-js/features/array/find-index' in '/Users/jin/kinyapp/node_modules/@firebase/polyfill/dist'
 @ ./node_modules/@firebase/polyfill/dist/index.esm.js 4:0-43
 @ ./node_modules/firebase/app/dist/index.cjs.js
 @ ./src/firebase.js
 @ ./src/components/Login.js
 @ ./src/stories/index.js
 @ ./.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 ./node_modules/webpack-hot-middleware/client.js?reload=true

ERROR in ./node_modules/@firebase/polyfill/dist/index.esm.js
Module not found: Error: Can't resolve 'core-js/features/object/assign' in '/Users/jin/kinyapp/node_modules/@firebase/polyfill/dist'
 @ ./node_modules/@firebase/polyfill/dist/index.esm.js 5:0-40
 @ ./node_modules/firebase/app/dist/index.cjs.js
 @ ./src/firebase.js
 @ ./src/components/Login.js
 @ ./src/stories/index.js
 @ ./.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 ./node_modules/webpack-hot-middleware/client.js?reload=true

๋ชจ๋“  100 ๋Œ“๊ธ€

Storybook์€ ์–ด๋–ป๊ฒŒ ๋“  ์ž˜๋ชป core-js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @babel/preset-env ๋ฒ„์ „ 7.4.1์ด core-js@3 ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋‚ด Storybook ๋ฐ˜์‘ ์•ฑ์ด ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

client-api๋Š” ์ƒ์„ฑ ๋œ ์ฝ”์–ด์— ํ•„์š”ํ•˜๋ฏ€๋กœ ์ข…์†์„ฑ์œผ๋กœ core-js @ 2 ๊ฐ€ ์žˆ์–ด์•ผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

5.0.4 ๋ฐ 5.0.5๋กœ ์ˆ˜์ •๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์žฌ์ƒ์‚ฐ ๋ฐฉ๋ฒ• :
@storybook/cli ๋ฐ init ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ npx -p @storybook/cli sb init --type react ์Šคํ† ๋ฆฌ ๋ถ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

โžœ  my-prj npx -p @storybook/cli sb init --type react
npx: installed 404 in 11.526s

WARNING: We noticed you're using the `useBuiltIns` option without declaring a core-js version. Currently, we assume version 2.x when no version is passed. Since this default version will likely change in future versions of Babel, we recommend explicitly setting the core-js version you are using via the `corejs` option.

You should also be sure that the version you pass to the `corejs` option matches the version specified in your `package.json`'s `dependencies` section. If it doesn't, you need to run one of the following commands:

  npm install --save core-js<strong i="11">@2</strong>    npm install --save core-js<strong i="12">@3</strong>
  yarn add core-js<strong i="13">@2</strong>              yarn add core-js<strong i="14">@3</strong>

[BABEL] Note: The code generator has deoptimised the styling of /Users/lumio/.npm/_npx/74147/lib/node_modules/@storybook/cli/node_modules/lodash/lodash.js as it exceeds the max of 500KB.

 sb init - the simplest way to add a storybook to your project.

 โ€ข Installing Storybook for user specified project type. โœ“
 โ€ข Adding storybook support to your "React" app. โœ“
 โ€ข Preparing to install dependencies. โœ“


> [email protected] install ./my-prj/node_modules/fsevents
> node install

node-pre-gyp WARN Using needle for node-pre-gyp https download
[fsevents] Success: "./my-prj/node_modules/fsevents/lib/binding/Release/node-v64-darwin-x64/fse.node" is installed via remote
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

added 1160 packages from 900 contributors in 23.386s

 โ€ข Installing dependencies. โœ“

To run your storybook, type:

   npm run storybook

For more information visit: https://storybook.js.org

โžœ  my-prj nvim .
โžœ  my-prj yarn storybook
yarn run v1.15.2
$ start-storybook -p 6006
info @storybook/react v5.0.5
info
info => Loading presets
info => Loading presets
info => Loading custom addons config.
info => Using default webpack setup.
info => Using base config because react-scripts is not installed.
 10% building 5/8 modules 3 active ...j/node_modules/querystring-es3/index.js
WARNING: We noticed you're using the `useBuiltIns` option without declaring a core-js version. Currently, we assume version 2.x when no version is passed. Since this default version will likely change in future versions of Babel, we recommend explicitly setting the core-js version you are using via the `corejs` option.

You should also be sure that the version you pass to the `corejs` option matches the version specified in your `package.json`'s `dependencies` section. If it doesn't, you need to run one of the following commands:

  npm install --save core-js<strong i="15">@2</strong>    npm install --save core-js<strong i="16">@3</strong>
  yarn add core-js<strong i="17">@2</strong>              yarn add core-js<strong i="18">@3</strong>

 11% building 13/18 modules 5 active ...my-prj/node_modules/strip-ansi/index.js
WARNING: We noticed you're using the `useBuiltIns` option without declaring a core-js version. Currently, we assume version 2.x when no version is passed. Since this default version will likely change in future versions of Babel, we recommend explicitly setting the core-js version you are using via the `corejs` option.

You should also be sure that the version you pass to the `corejs` option matches the version specified in your `package.json`'s `dependencies` section. If it doesn't, you need to run one of the following commands:

  npm install --save core-js<strong i="19">@2</strong>    npm install --save core-js<strong i="20">@3</strong>
  yarn add core-js<strong i="21">@2</strong>              yarn add core-js<strong i="22">@3</strong>

webpack built 896edc3c5271d2618768 in 4031ms
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                                  โ”‚
โ”‚   Storybook 5.0.5 started                        โ”‚
โ”‚   4.71 s for manager and 4.48 s for preview      โ”‚
โ”‚                                                  โ”‚
โ”‚   Local:            http://localhost:6006/       โ”‚
โ”‚   On your network:  http://10.52.40.112:6006/    โ”‚
โ”‚                                                  โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

@lumio ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค. 5.1.0-alpha.16 ์—์„œ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ, ์•„๋ฌด๋„ ๋ถˆ๋งŒ์„ ์ œ๊ธฐํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉฐ์น  ๋™์•ˆ ๋ฐฐํฌ ๋œ ํ›„ latest ์ˆ˜์ •์„ ๋ฆด๋ฆฌ์Šค ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•Œ์•˜๋‹ค! ๊ฐ์‚ฌ!

์Šคํ† ๋ฆฌ ๋ถ ๋ฒ„์ „์„ 5.0.6์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@ jessy1092 ์ž˜ ๋“ค๋ ค์š”. ์ง€๊ธˆ์€ ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์‹œ ์—ด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
์Šคํ† ๋ฆฌ ๋ถ 5.1.0-alpha.18์—์„œ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์ €์žฅ์†Œ : https://github.com/christophehurpeau/cra-rest-hooks-storybook

yarn install
yarn storybook

์ด๊ฒŒ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž€๋‹ค

@christophehurpeau ์ €๋ฅผ ์œ„ํ•ด 5.0.6 ์‚ฌ์šฉํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‹ค์‹œ ์—ฌ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ญ

์ฃผ ํ”„๋กœ์ ํŠธ์—์„œ core-js @ v3 ์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…์€ webpack ๊ตฌ์„ฑ์—์„œ core-js/modules ๊ฐ€ ์Šคํ† ๋ฆฌ ๋ถ๊ณผ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜๋Š” ๋ฒ„์ „์œผ๋กœ ํ™•์ธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค.

resolve: {
    alias: {
        'core-js/modules': path.resolve(
            __dirname,
            'node_modules/@storybook/core/node_modules/core-js/modules',
        ),
    }
}

Hacky ์†”๋ฃจ์…˜์ด์ง€๋งŒ ์ง€๊ธˆ์€ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

@shilman ๋„ 5.0.6, ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค (https://github.com/christophehurpeau/cra-rest-hooks-storybook/tree/storybook-5.0.6)

@artursvonda ๋‚˜๋Š” core-js v3๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ข…์†์„ฑ์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. v2๋Š” node_modules์—์„œ ์ค‘๋ณต ์ œ๊ฑฐ ๋œ react-scripts์™€ @ storybook / core์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— node_modules/@storybook/core/node_modules/core-js ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. core-js 3์„ ์‚ฌ์šฉํ•˜๋Š” ์ข…์†์„ฑ ๋งŒ core-js๋ฅผ ์ฐพ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์•„ ๊ทธ๋ž˜์„œ ๋ณ„์นญ์„ ์‚ญ์ œํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

module.exports = ({ config, mode }) => {
  console.log(config.resolve.alias);
  delete config.resolve.alias['core-js'];
  return config;
};

์™€. ๋ณ„์นญ์€ ๋ฌด์„ญ์Šต๋‹ˆ๋‹ค. ์™œ ๋™ํ™”์ฑ…์—์„œ ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

cc @ndelangen

๋‚˜๋„์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ core-js @ 3 ์— ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ ํ•œ ์ตœ์‹  firebase๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
firebase๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ๋œ ์Šคํ† ๋ฆฌ ๋ถ์—์„œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ERROR in ./node_modules/@firebase/polyfill/dist/index.esm.js
Module not found: Error: Can't resolve 'core-js/features/array/find' in '/Users/jin/kinyapp/node_modules/@firebase/polyfill/dist'
 @ ./node_modules/@firebase/polyfill/dist/index.esm.js 3:0-37
 @ ./node_modules/firebase/app/dist/index.cjs.js
 @ ./src/firebase.js
 @ ./src/components/Login.js
 @ ./src/stories/index.js
 @ ./.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 ./node_modules/webpack-hot-middleware/client.js?reload=true

ERROR in ./node_modules/@firebase/polyfill/dist/index.esm.js
Module not found: Error: Can't resolve 'core-js/features/array/find-index' in '/Users/jin/kinyapp/node_modules/@firebase/polyfill/dist'
 @ ./node_modules/@firebase/polyfill/dist/index.esm.js 4:0-43
 @ ./node_modules/firebase/app/dist/index.cjs.js
 @ ./src/firebase.js
 @ ./src/components/Login.js
 @ ./src/stories/index.js
 @ ./.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 ./node_modules/webpack-hot-middleware/client.js?reload=true

ERROR in ./node_modules/@firebase/polyfill/dist/index.esm.js
Module not found: Error: Can't resolve 'core-js/features/object/assign' in '/Users/jin/kinyapp/node_modules/@firebase/polyfill/dist'
 @ ./node_modules/@firebase/polyfill/dist/index.esm.js 5:0-40
 @ ./node_modules/firebase/app/dist/index.cjs.js
 @ ./src/firebase.js
 @ ./src/components/Login.js
 @ ./src/stories/index.js
 @ ./.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 ./node_modules/webpack-hot-middleware/client.js?reload=true

ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// In some story or dependency of a story
import firebase from "firebase/app"

์ƒˆ๋กœ์šด cra2 ๋ฐ sb init ์ถฉ๋Œ

๋‚˜์—๊ฒŒ๋„ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. firebase ๋ฒ„์ „ 4.12.1 ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์€ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ

์•„ ๊ทธ๋ž˜์„œ ๋ณ„์นญ์„ ์‚ญ์ œํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

module.exports = ({ config, mode }) => {
  console.log(config.resolve.alias);
  delete config.resolve.alias['core-js'];
  return config;
};

๋˜ํ•œ [email protected] ๋ฅผ [email protected] ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ ์ด๋ฅผ .storybook/webpack.config.js ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ firebase๊ฐ€ 5.10.0 ๋กœ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์Šคํ† ๋ฆฌ ๋ถ๋„ 5.0.10 ์—…๊ทธ๋ ˆ์ด๋“œ ๋œ ๊ฒƒ์„ ๋ณด์•˜๊ณ  ์œ„์˜ "hack"๋ณ„์นญ์„ ์ œ๊ฑฐ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ firebase์™€ storybook์„ ๋ชจ๋‘ ์ตœ์‹ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ๋™ํ™”์ฑ… ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@zjaml ์œ„์˜ @parkerholladay ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‹œ๋„

@shilman ์— ๋Œ€ํ•ด, ์–ด๋–ค ํŒŒ์ผ์—์„œ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@zjaml .storybook/webpack.config.js ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์„ ์œ„ํ•ด ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค!

@shilman ๊ทธ๋ ‡๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๊ฐ์‚ฌ!

๋‚˜๋Š” babel preset-env๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์Šคํ† ๋ฆฌ ๋ถ 5.0.10์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

"useBuiltIns": "usage",
"corejs": {version: 3},

๋ณ„์นญ ์‚ญ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™ @christophehurpeau

๋ฏธ๋ฆฌ๋ณด๊ธฐ์˜ webpack.config์—์„œ ๋ณ„์นญ์„ ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์–ด์ฉŒ๋ฉด ๋ชจ๋“  ๋ณ„์นญ์ผ๊นŒ์š”?

์—ฌ๊ธฐ์—์„œ ๊ฐ™์€ ๋ฌธ์ œ, ๋ณ„์นญ ์ œ๊ฑฐ๋Š” ๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ๋„ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ณ„์นญ์„ ์ œ๊ฑฐํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด PR์€์ด ๋ฌธ์ œ์™€ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://github.com/storybooks/storybook/pull/6566

๊ทธ๋ž˜๋„ ์•„๋งˆ๋„ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ V6์—์„œ ์ œ๊ณต ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ ์ค‘์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” PR์„ ์—ฌ๋Ÿฌ PR๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์—ฌ ์ผ๋ถ€๋ฅผ ๋” ๋นจ๋ฆฌ ๋ณ‘ํ•ฉํ•˜๊ณ  ๋ฆด๋ฆฌ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

์—ฌ๊ธฐ์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. core-js ๋ฒ„์ „ 3์„ ์‚ฌ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์ง€๋งŒ react-app-polyfill ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „ 0.2.2๋กœ ๋กค๋ฐฑํ•ฉ๋‹ˆ๋‹ค.

์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๋ฉด [email protected] ๋ฐ [email protected]

์œ„์™€ ํ•จ๊ป˜ ./storybook/webpack.config.js ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

~ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค-@ storybook / [email protected] ์ด ์ถœ์‹œ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค-์˜๋„์ 

ํŽธ์ง‘ : ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค-๋‹ค๋ฅธ ๋ฌธ์ œ์—์„œ ๋‹ต์„ ์ฐพ๊ธฐ ์ข…๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/storybooks/storybook/issues/5893

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
5.1.0-alpha.x๋ฅผ ์–ป์œผ๋ ค๋ฉด CLI / React ๋„ค์ดํ‹ฐ๋ธŒ์˜ ๋‹ค์Œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

npx -p @ storybook / cli @ next sb init --type react_native

๋ณ„์นญ์„ ์‚ญ์ œํ•ด๋„ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ”๋ฒจ ํŒŒ์ผ์„ .storybook ๋กœ ์ด๋™ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ์ตœ๊ทผ์ด ๋ฌธ์ œ์—์„œ ๋งŽ์€ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์งˆ๋ฌธ, ์˜๊ฒฌ ๋˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด ํ† ๋ก ์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฐ ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ๊ธฐ์—ฌ์— ์—ด๋ ค ์žˆ์œผ๋ฏ€๋กœ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ํ’€ ์š”์ฒญ์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค. ๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” 30 ์ผ ํ›„์— ๋งˆ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

^ ์ œ๊ฐ€ ์•„๋Š” ํ•œ์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋งค์šฐ ๋ฌธ์ œ์ด๋ฉฐ ๋น„ํ™œ์„ฑ์œผ๋กœ ํ‘œ์‹œํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

@jdhayford AFAIK์ด ๋ฌธ์ œ๋Š” 5.1์—์„œ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ๋ฉฐ์น  ํ›„์— ์ถœ์‹œ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

@shilman ๋Œ€๋‹จํ•ด! ๊ธฐ์—ฌ์ž์—๊ฒŒ ๊ฐ์‚ฌํ•˜๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์ง€๋งŒ @brycehill ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณ„์นญ์„ ์‚ญ์ œํ•ด๋„ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ”๋ฒจ ํŒŒ์ผ์„ .storybook ๋กœ ์ด๋™ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @ByDesignGit ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ตœ์‹  npm i core-js -D๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ข…์†์„ฑ์„ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ ์ ˆํžˆ ๊ด€๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ์ˆ˜์ •์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ์ด์ „ ํŒจํ‚ค์ง€๊ฐ€ ์ด์ „ ๋ฒ„์ „์˜ core-js (2.6.9)๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ์„ค์น˜ํ–ˆ๊ณ  ์ด์ œ ์Šคํ† ๋ฆฌ ๋ถ์— core-js @ 3์ด ํ•„์š”ํ•œ ์›๋ž˜ ๋ฌธ์ œ์™€๋Š” ๋ฐ˜๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค
@ChandanPHAI ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์‹œ ์ˆ˜์ •

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @ByDesignGit ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

.babelrc ์„ .storybook ๋กœ ์˜ฎ๊ฒจ์„œ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์ง€๋งŒ @brycehill ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณ„์นญ์„ ์‚ญ์ œํ•ด๋„ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ”๋ฒจ ํŒŒ์ผ์„ .storybook ๋กœ ์ด๋™ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

ERROR in ./.storybook/config.js
Module not found: Error: Can't resolve 'core-js/modules/es.array.for-each' in '/indio-ui/.storybook'
 @ ./.storybook/config.js 1:0-43
 @ multi ./node_modules/@storybook/core/dist/server/common/polyfills.js ./node_modules/@storybook/core/dist/server/preview/globals.js ./.storybook/config.js ./node_modules/webpack-hot-middleware/client.js?reload=true

๋ณ„์นญ์„ ์‚ญ์ œํ•ด๋„ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ @ChandanPHAI๊ฐ€ ์ œ์•ˆํ•œ๋Œ€๋กœ npm i core-js -D ๋ฅผ ์„ค์น˜ ํ–ˆ๊ณ  ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ‘Œ

์ ์ ˆํ•œ ์ˆ˜์ •์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @ByDesignGit ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

.babelrc ์„ .storybook ๋กœ ์˜ฎ๊ฒจ์„œ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์ง€๋งŒ @brycehill ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณ„์นญ์„ ์‚ญ์ œํ•ด๋„ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ”๋ฒจ ํŒŒ์ผ์„ .storybook ๋กœ ์ด๋™ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค! .storybook์— .babelrc๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@ arvenz0210 @ByDesignGit ์€ ์ด์ œ ๋‘ ๊ฐœ์˜ .babelrc ํŒŒ์ผ์„ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ? ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

vue.js ํ”„๋กœ์ ํŠธ๋ฅผ "@storybook/vue": "^5.1.1" ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด core-js ๋ณ„์นญ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

  • babel.config.js ๋ฅผ ์˜ฎ๊ธธ ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด webpack ๊ตฌ์„ฑ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ์ถ”๊ฐ€ / ์ œ๊ฑฐ ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค (https://github.com/storybookjs/vue-cli-plugin-storybook v0.6.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋‚ด webpack ๊ตฌ์„ฑ์€ ๋ถ€๋ถ„์ ์œผ๋กœ vue-cli์— ์˜ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. vue-cli๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ ๋œ ์›นํŒฉ ๊ตฌ์„ฑ๊ณผ ๋ณ‘ํ•ฉ๋˜๋Š” vue.config.js ๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€ ํ•œ ์•ฝ๊ฐ„์˜ ๊ด€๋ จ์—†๋Š” ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.)
  • core-js ๋“ฑ์— ์˜์กดํ•˜๋Š” core-js, ๋ณ„์นญ ๋˜๋Š” deps์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ / ์ œ๊ฑฐ ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

Angular ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ด๊ฒƒ์„๋ณด๊ณ  ์žˆ์œผ๋ฏ€๋กœ .babel ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ core-js ์„ค์น˜ ๋˜๋Š” ๋ณ„์นญ ์‚ญ์ œ๋Š” ์šด์ด ์—†์Šต๋‹ˆ๋‹ค.

//  console.log(config.resolve.alias);
{
  'babel-runtime/core-js/object/assign': '/Development/canopy/node_modules/@storybook/core/node_modules/core-js/es/object/assign.js',
  react: '~/Development/canopy/node_modules/react',
  'react-dom': '/Development/canopy/node_modules/react-dom'
}

5.1.1์˜ ๋ชจ๋“  ๊ฐœ์ •.

   "@storybook/addon-actions": "^5.1.1",
    "@storybook/addon-knobs": "^5.1.1",
    "@storybook/addon-notes": "^5.1.1",
    "@storybook/addon-viewport": "^5.1.1",
    "@storybook/addons": "^5.1.1",
    "@storybook/angular": "^5.1.1",

๋” ์ด์ƒ ๋””๋ฒ„๊น… ํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@storybook/react": "^5.1.1" ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด npm install ์—ฌ์ „ํžˆ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. @ChandanPHAI ๊ฐ€ ์ •ํ™• core-js ํŒจํ‚ค์ง€์˜ v2๋ฅผ ์„ค์น˜ ํ•œ ๋‹ค๋ฅธ ์ข…์†์„ฑ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด PR์€ ์˜ค๋Š˜์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. @shilman ์€ ๊ณง ์ƒˆ ๋ฆด๋ฆฌ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. # 7051

"@storybook/react": "^5.1.3" ๊ณ„์† ๋ฐœ์ƒ- core-js --dev ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ์ง๋ฉด ํ•œ ์‚ฌ๋žŒ https://github.com/storybookjs/storybook/issues/7021 ??

์•ผ!! ๋ฐฉ๊ธˆ์ด ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” PR # 7016์ด ํฌํ•จ ๋œ https://github.com/storybookjs/storybook/releases/tag/v5.1.4 ๋ฅผ ๋ฆด๋ฆฌ์Šคํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”!

์ด ๋ฌธ์ œ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•  ์ผ์ด ๋” ๋งŽ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋‹ค์‹œ์—ฌ์‹ญ์‹œ์˜ค.

@shilman์ด ๋ฐฉ๊ธˆ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์œผ๋ฉฐ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค ... :(

Module not found: Error: Can't resolve 'core-js/modules/web.dom-collections.iterator'

@shilman ์ €๋Š” ์Šคํ† ๋ฆฌ ๋ถ๊ณผ ์• ๋“œ์˜จ์„ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

core-js์™€ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

npm i core-js -D๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋กœ์ปฌ๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

core-js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์—์„œ babel-polyfill ๋ฅผ ๊ฐ€์ ธ ์˜ค๋‚˜์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ์ œ๊ฑฐ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์–ป์€ ์žฌํ˜„ ๋ธŒ๋žœ์น˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/umakantp/demo-repro/pull/1

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ์ฑ„๋„์„ ํ†ตํ•ด ๋‚˜์—๊ฒŒ ๋” ๋งŽ์€ ์žฌํ˜„ ์ €์žฅ์†Œ๋ฅผ ๋ณด๋‚ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

@ndelangen ์•ˆ๋…•ํ•˜์„ธ์š”, ๋‚ด ํด๋”์— babel-polyfill ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ ๋ณด์—ฌ ๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
์Šคํ† ๋ฆฌ ๋ถ๊ณผ ๋ชจ๋“  ์• ๋“œ์˜จ์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, 5.1.4์—์„œ๋„ core-js์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. core-js๋ฅผ dev ์ข…์†์„ฑ์œผ๋กœ ์ˆ˜๋™ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

24 ์‹œ๊ฐ„ ์ด๋‚ด์— ์ƒˆ ๋ฆด๋ฆฌ์Šค ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค!

์ดํ˜ธ !! ๋ฐฉ๊ธˆ์ด ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” PR # 7086์ด ํฌํ•จ ๋œ https://github.com/storybookjs/storybook/releases/tag/v5.1.5 ๋ฅผ ๋ฆด๋ฆฌ์Šคํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”!

์ด ๋ฌธ์ œ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•  ์ผ์ด ๋” ๋งŽ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋‹ค์‹œ์—ฌ์‹ญ์‹œ์˜ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฑฐ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ERROR in ./src/components/list/VirtualizedList.jsx
Module not found: Error: Cannot find module 'C:\ProjectDirectory\node_modules\@storybook\addon-storysource\loader.js!C:\ProjectDirectory\node_modules\core-js\modules\web.dom-collections.iterator.js'
 @ ./src/components/list/VirtualizedList.jsx 19:0-54
 @ ./src/components/list/index.js
 @ ./src/components/list/List.story.jsx
 @ ./src/components sync story\.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 (webpack)-hot-middleware/client.js?reload=true

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฐฐ์ œํ•˜์ง€ ์•Š๊ณ  ๋‚ด ์ž˜๋ชป ์ผ ์ˆ˜์žˆ๋‹ค. ์–€ ์บ์‹œ๋ฅผ ํด๋ž˜ ๋‹ํ•˜๊ณ  yarn.lock์„ ์‚ญ์ œํ•˜๊ณ  ๋ชจ๋“  ์ข…์†์„ฑ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. core-js๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ @babel/preset-env ์™€ ๊ฐ™์€ ์‚ฌ์ „ ์„ค์ •๊ณผ ํ•จ๊ป˜ babel์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ์›นํŒฉ ๊ตฌ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

const path = require('path');
const { DefinePlugin } = require('webpack');

const buildTimeConfig = require('../buildTimeConfig');

const resolveLocalDirectory = relativePath => path.resolve(__dirname, '../', relativePath);

module.exports = async ({ config }) => {
  config.resolve.extensions.push('.jsx');
  config.resolve.extensions.push('.json');

  config.plugins.push(
    new DefinePlugin({
      SUPPORTED_LOCALES: `'${buildTimeConfig.REQUIRED_LOCALES}'`,
    }),
  );

  config.resolve.alias = {
    $components: resolveLocalDirectory('src/components'),
  };

  config.module.strictExportPresence = true;

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

  // Unsafe override of css-modules rule for the following
  // https://github.com/storybooks/storybook/issues/6083.
  config.module.rules[2] = {
    oneOf: [
      {
        test: /\.module\.(scss|css)$/,
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              localsConvention: 'camelCaseOnly',
              importLoaders: 1,
              modules: {
                localIdentName: '[local]_[hash:5]',
              },
              sourceMap: true,
            },
          },
          'sass-loader',
        ],
      },
      {
        test: /(?<!\.module)\.(scss|css)$/,
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              importLoaders: 1,
              sourceMap: true,
            },
          },
          'sass-loader',
        ],
      },
      {
        test: /\.json$/,
        include: /node_modules\/emoji-dictionary/,
        loader: 'json-loader',
      },
      {
        exclude: /\.(js|jsx|ejs|html|json|md)$/,
        loader: 'file-loader',
        options: { name: 'assets/[name].[ext]' },
      },
    ],
  };

  return config;
};

@filippoitaliano ๋‚˜๋Š” ๋˜‘๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์ด core-js ๋ชจ๋“ˆ ๊ฒฝ๋กœ์— ์žˆ๊ณ  babel ์‚ฌ์ „ ์„ค์ •์— core-js 3์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

ํŽธ์ง‘ํ•˜๋‹ค:

addon-storysource๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์›์ธ์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ 2 :
๋” ๊นŠ์ด ํŒŒ์‹ญ์‹œ์˜ค. ์–ด๋–ค ์ด์œ ๋กœ ์Šคํ† ๋ฆฌ ์†Œ์Šค ๋กœ๋”๋Š” ์• ๋“œ์˜จ ํŒจ๋„์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  .js ํŒŒ์ผ์ด ์žˆ์–ด์•ผํ•˜๋ฉฐ ๊ตฌ์„ฑ์—์„œ ๋…ธ๋“œ ๋ชจ๋“ˆ์„ ์ œ์™ธํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

{
test: /\.js$/,
exclude: /node_modules/,
loaders: [require.resolve('@storybook/addon-storysource/loader')],
enforce: 'pre',
}

# 3626 # 6984์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cc @ igor-dv @libetl โ˜๏ธ

@ aga5tya ์˜ˆ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. node_modules๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” :

  • [x] ๋ชจ๋“  @ storybook / * ์ข…์†์„ฑ ์—…๋ฐ์ดํŠธ
  • [x] .babelrc์— "corejs": 3 ์ถ”๊ฐ€
  • [x] yarn add corejs@3
  • [x] webpack.config.js์— exclude: /node_modules/, ์ถ”๊ฐ€
  • [x] ๋‚ด app.js์—์„œ import 'babel-polyfill' ์ œ๊ฑฐ

babel polyfill์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ๊ณณ์—์„œ core-js๋กœ ๋Œ€์ฒด๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” airbnb-browser-shims :-p

์–ด๋Š ์ชฝ์ด๋“  node_modules๋Š” ํ•ญ์ƒ ํŠธ๋žœ์Šค ํŒŒ์ผ์—์„œ ์ œ์™ธ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

./.storybook/config.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ : ์˜ค๋ฅ˜ : 'core-js / modules / web.dom.iterable'๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Storybook / vue 5.1.9๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Screen Shot 2019-06-22 at 7 26 48 PM

@flowck ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— core-js v3๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

core-js๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์Šคํ† ๋ฆฌ ๋ถ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์†Œ๋น„์ž๊ฐ€ ์ž์‹ ์˜ ์‹ฌ์„ ์ œ๊ณต ํ•  ์ˆ˜์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

babel-polyfills๋Š” ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ dep์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋™ํ™”์ฑ…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

yarn upgrade interactive --latest ํ•˜๊ณ  ๋ชจ๋“  ์Šคํ† ๋ฆฌ ๋ถ ๊ด€๋ จ ์ข…์†์„ฑ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์œผ๋ฉฐ ์ด์ œ ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค! ๐ŸŽ‰

์ฐธ๊ณ  :์ด ์˜ค๋ฅ˜๋Š” @storybook/addon-knobs ์• ๋“œ์˜จ์„ ์ถ”๊ฐ€ ํ•œ ํ›„์— ๋งŒ โ€‹โ€‹๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@ chadlavi-casebook uhm, webpack ๋ฌด์‹œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
https://webpack.js.org/plugins/ignore-plugin/

@ storybook / vue 5.1.9๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. yarn why core-js ์‹คํ–‰ ๊ฒฐ๊ณผ :

=> Found "[email protected]"
info Has been hoisted to "core-js"
info Reasons this module exists
   - "workspace-aggregator-20eaddfd-71c7-48bf-a12d-ecca73d8226d" depends on it
   - Hoisted from "_project_#@storybook#addon-knobs#core-js"
   - Hoisted from "_project_#@storybook#addon-viewport#core-js"
   - Hoisted from "_project_#@storybook#vue#core-js"
   - Hoisted from "_project_#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#addons#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#client-api#core-js"
   - Hoisted from "_project_#@storybook#addon-viewport#@storybook#client-logger#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#components#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#core-events#core-js"
   - Hoisted from "_project_#@storybook#vue#@storybook#core#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#theming#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#addons#@storybook#api#core-js"
   - Hoisted from "_project_#@storybook#vue#@storybook#core#@storybook#channel-postmessage#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#addons#@storybook#channels#core-js"
   - Hoisted from "_project_#@storybook#vue#@storybook#core#@storybook#node-logger#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#client-api#@storybook#router#core-js"
   - Hoisted from "_project_#@storybook#vue#@storybook#core#@storybook#ui#core-js"
   - Hoisted from "_project_#@storybook#vue#@storybook#core#lazy-universal-dotenv#core-js"
   - Hoisted from "_project_#@storybook#addon-knobs#@storybook#components#simplebar-react#simplebar#core-js"
info Disk size without dependencies: "6.69MB"
info Disk size with unique dependencies: "6.69MB"
info Disk size with transitive dependencies: "6.69MB"
info Number of shared dependencies: 0
=> Found "@vue/babel-preset-app#[email protected]"
info This module exists because "_project_#@vue#cli-plugin-babel#@vue#babel-preset-app" depends on it.
info Disk size without dependencies: "7.68MB"
info Disk size with unique dependencies: "7.68MB"
info Disk size with transitive dependencies: "7.68MB"
info Number of shared dependencies: 0
=> Found "@babel/runtime-corejs2#[email protected]"
info This module exists because "_project_#@vue#cli-plugin-babel#@vue#babel-preset-app#@babel#runtime-corejs2" depends on it.
info Disk size without dependencies: "7.68MB"
info Disk size with unique dependencies: "7.68MB"
info Disk size with transitive dependencies: "7.68MB"
info Number of shared dependencies: 0
=> Found "fbjs#[email protected]"
info This module exists because "_project_#@storybook#addon-knobs#@storybook#components#recompose#fbjs" depends on it.
info Disk size without dependencies: "4.37MB"
info Disk size with unique dependencies: "4.37MB"
info Disk size with transitive dependencies: "4.37MB"
info Number of shared dependencies: 0
=> Found "babel-runtime#[email protected]"
info This module exists because "_project_#@storybook#addon-knobs#@storybook#components#react-syntax-highlighter#babel-runtime" depends on it.
info Disk size without dependencies: "7.68MB"
info Disk size with unique dependencies: "7.68MB"
info Disk size with transitive dependencies: "7.68MB"
info Number of shared dependencies: 0

โœ… devDependencies์— core-js@^2.6.9 ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € node_modules๋ฅผ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค.
rm -rf node_modules

v5.1.9 ์—์„œ v5.0.6 v5.1.9 ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ. v5.1.9 ์—์„œ v5.0.6 ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ ์ˆ˜์ • ๋จ

@JamyGolden & @Exomnius ์„ค์ •์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ๊ณต์œ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

yarn why core-js ์˜ ์ถœ๋ ฅ์€ ๋„์›€์ด๋˜๋ฉฐ ์žฌ์ƒ์‚ฐ ์ €์žฅ์†Œ๋Š” ํ›จ์”ฌ ๋” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

@ndelangen ์ง€๊ธˆ ๋ฌธ์ œ์—†์ด 5.1.9 ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํŒจ์น˜ ์ข…์†์„ฑ์ด ์„ค์น˜๋˜์–ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿคทโ€โ™€๏ธ

ํŽธ์ง‘, ๋‹ค์‹œ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•ด์•ผํ–ˆ๊ณ  CI ํ…Œ์ŠคํŠธ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— yarn why core-js ๋ฅผํ–ˆ๋‹ค :

$ yarn why core-js
yarn why v1.17.3
[1/4] ๐Ÿค”  Why do we have the module "core-js"...?
[2/4] ๐Ÿšš  Initialising dependency graph...
[3/4] ๐Ÿ”  Finding dependency...
[4/4] ๐Ÿšก  Calculating file sizes...
=> Found "[email protected]"
info Has been hoisted to "core-js"
info Reasons this module exists
   - Hoisted from "@storybook#react#core-js"
   - Hoisted from "@storybook#addon-actions#core-js"
   - Hoisted from "@storybook#addon-links#core-js"
   - Hoisted from "@storybook#addon-storyshots#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#components#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#api#core-js"
   - Hoisted from "@storybook#react#@storybook#core#core-js"
   - Hoisted from "@storybook#addon-links#@storybook#core-events#core-js"
   - Hoisted from "@storybook#addon-storyshots#@storybook#addons#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#theming#core-js"
   - Hoisted from "@storybook#react#@storybook#node-logger#core-js"
   - Hoisted from "@storybook#addon-links#@storybook#router#core-js"
   - Hoisted from "@storybook#addon-storyshots#@storybook#addons#@storybook#channels#core-js"
   - Hoisted from "@storybook#react#@storybook#core#@storybook#channel-postmessage#core-js"
   - Hoisted from "@storybook#react#@storybook#core#@storybook#client-api#core-js"
   - Hoisted from "@storybook#react#@storybook#core#@storybook#ui#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#theming#@storybook#client-logger#core-js"
   - Hoisted from "@storybook#react#@storybook#core#lazy-universal-dotenv#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#components#simplebar-react#simplebar#core-js"
info Disk size without dependencies: "6.69MB"
info Disk size with unique dependencies: "6.69MB"
info Disk size with transitive dependencies: "6.69MB"
info Number of shared dependencies: 0
=> Found "protractor-flake#[email protected]"
info This module exists because "protractor-flake" depends on it.
info Disk size without dependencies: "3.45MB"
info Disk size with unique dependencies: "3.45MB"
info Disk size with transitive dependencies: "3.45MB"
info Number of shared dependencies: 0
=> Found "core-js-compat#[email protected]"
info This module exists because "@babel#preset-env#core-js-compat" depends on it.
info Disk size without dependencies: "6.63MB"
info Disk size with unique dependencies: "6.63MB"
info Disk size with transitive dependencies: "6.63MB"
info Number of shared dependencies: 0
=> Found "babel-runtime#[email protected]"
info This module exists because "social-tags-webpack-plugin#babel-runtime" depends on it.
info Disk size without dependencies: "7.66MB"
info Disk size with unique dependencies: "7.66MB"
info Disk size with transitive dependencies: "7.66MB"
info Number of shared dependencies: 0
=> Found "node-plop#[email protected]"
info This module exists because "plop#node-plop" depends on it.
info Disk size without dependencies: "7.66MB"
info Disk size with unique dependencies: "7.66MB"
info Disk size with transitive dependencies: "7.66MB"
info Number of shared dependencies: 0
=> Found "babel-polyfill#[email protected]"
info This module exists because "flow-typed#babel-polyfill" depends on it.
info Disk size without dependencies: "7.66MB"
info Disk size with unique dependencies: "7.66MB"
info Disk size with transitive dependencies: "7.66MB"
info Number of shared dependencies: 0
=> Found "fbjs#[email protected]"
info This module exists because "@storybook#addon-actions#@storybook#components#recompose#fbjs" depends on it.
info Disk size without dependencies: "4.37MB"
info Disk size with unique dependencies: "4.37MB"
info Disk size with transitive dependencies: "4.37MB"
info Number of shared dependencies: 0
โœจ  Done in 1.94s.

๋กœ์ปฌ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ CI์— ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@ndelangen ๊ทธ๋ž˜ CI์™€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์ง€๋งŒ (๋‚ด๊ฐ€ ํ™•๋ณดํ•˜๋ฉด ์›์‚ฌ / ๋…ธ๋“œ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค) ๋‚ด ํŽธ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค (์›์‚ฌ 1.15.2 , ๋…ธ๋“œ 8.15.1 ), ์šฐ๋ฆฌ๋„ ์ž ๊ธˆ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„๋Š” ์‹คํŒจํ•œ yarn why core-js ์ด๊ณ  ์ด๊ฒƒ์€ ๋‚ด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

yarn why core-js
yarn why v1.15.2
warning ../package.json: No license field
[1/4] ๐Ÿค”  Why do we have the module "core-js"...?
[2/4] ๐Ÿšš  Initialising dependency graph...
[3/4] ๐Ÿ”  Finding dependency...
[4/4] ๐Ÿšก  Calculating file sizes...
=> Found "[email protected]"
info Has been hoisted to "core-js"
info Reasons this module exists
   - Hoisted from "@storybook#react#core-js"
   - Hoisted from "@storybook#addon-actions#core-js"
   - Hoisted from "@storybook#addon-links#core-js"
   - Hoisted from "@storybook#addon-storyshots#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#components#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#api#core-js"
   - Hoisted from "@storybook#react#@storybook#core#core-js"
   - Hoisted from "@storybook#addon-links#@storybook#core-events#core-js"
   - Hoisted from "@storybook#addon-storyshots#@storybook#addons#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#theming#core-js"
   - Hoisted from "@storybook#react#@storybook#node-logger#core-js"
   - Hoisted from "@storybook#addon-links#@storybook#router#core-js"
   - Hoisted from "@storybook#addon-storyshots#@storybook#addons#@storybook#channels#core-js"
   - Hoisted from "@storybook#react#@storybook#core#@storybook#channel-postmessage#core-js"
   - Hoisted from "@storybook#react#@storybook#core#@storybook#client-api#core-js"
   - Hoisted from "@storybook#react#@storybook#core#@storybook#ui#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#theming#@storybook#client-logger#core-js"
   - Hoisted from "@storybook#react#@storybook#core#lazy-universal-dotenv#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#components#simplebar-react#simplebar#core-js"
info Disk size without dependencies: "6.69MB"
info Disk size with unique dependencies: "6.69MB"
info Disk size with transitive dependencies: "6.69MB"
info Number of shared dependencies: 0
=> Found "protractor-flake#[email protected]"
info This module exists because "protractor-flake" depends on it.
info Disk size without dependencies: "3.45MB"
info Disk size with unique dependencies: "3.45MB"
info Disk size with transitive dependencies: "3.45MB"
info Number of shared dependencies: 0
=> Found "core-js-compat#[email protected]"
info This module exists because "@babel#preset-env#core-js-compat" depends on it.
info Disk size without dependencies: "6.63MB"
info Disk size with unique dependencies: "6.63MB"
info Disk size with transitive dependencies: "6.63MB"
info Number of shared dependencies: 0
=> Found "babel-runtime#[email protected]"
info This module exists because "social-tags-webpack-plugin#babel-runtime" depends on it.
info Disk size without dependencies: "7.66MB"
info Disk size with unique dependencies: "7.66MB"
info Disk size with transitive dependencies: "7.66MB"
info Number of shared dependencies: 0
=> Found "node-plop#[email protected]"
info This module exists because "plop#node-plop" depends on it.
info Disk size without dependencies: "7.66MB"
info Disk size with unique dependencies: "7.66MB"
info Disk size with transitive dependencies: "7.66MB"
info Number of shared dependencies: 0
=> Found "babel-polyfill#[email protected]"
info This module exists because "flow-typed#babel-polyfill" depends on it.
info Disk size without dependencies: "7.66MB"
info Disk size with unique dependencies: "7.66MB"
info Disk size with transitive dependencies: "7.66MB"
info Number of shared dependencies: 0
=> Found "fbjs#[email protected]"
info This module exists because "@storybook#addon-actions#@storybook#components#recompose#fbjs" depends on it.
info Disk size without dependencies: "4.37MB"
info Disk size with unique dependencies: "4.37MB"
info Disk size with transitive dependencies: "4.37MB"
info Number of shared dependencies: 0
โœจ  Done in 2.85s.

๋ชจ๋“  ์–ด์„ค ์…˜์— ์กด์žฌํ•˜๋Š” ๋™์ผํ•œ ์˜ค๋ฅ˜์˜ ์˜ˆ :

FAIL path/to/test/index.spec.js
  โ— Test suite failed to run

    Cannot find module 'core-js/modules/es6.symbol' from 'localMocksFile.js'

์•„ํ•˜, ์Šคํ† ๋ฆฌ ๋ถ์€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€๋งŒ ํ…Œ์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ ์˜ค๋ž˜๋œ core-js ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

localMocksFile.js ์•ˆ์— ๋ฌด์—‡์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ๋‹น์‹ ์ดํ•ด์•ผ ํ•  ์ผ์€ ๊ทธ 1 ๊ฐœ์˜ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ndelangen ์ด์ „์— ๋ถ™์—ฌ ๋„ฃ์€ ์˜ค๋ฅ˜๋Š” ์Šคํ† ๋ฆฌ ์ƒท ์‹คํ–‰๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค (์Šคํ† ๋ฆฌ ๋ถ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„์— ๋งŒ โ€‹โ€‹๋ฐœ์ƒ ํ•จ). yarn storybook ์‹คํ–‰ํ•  ๋•Œ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€๋ฐ›๋Š” ์˜ค๋ฅ˜์—๋Š” ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ํŒŒ์ผ์— ์˜ค๋ฅ˜๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Entrypoint main [big] = runtime~main.78e9af38499895fecc3d.bundle.js runtime~main.78e9af38499895fecc3d.bundle.js.map vendors~main.78e9af38499895fecc3d.bundle.js vendors~main.78e9af38499895fecc3d.bundle.js.map main.78e9af38499895fecc3d.bundle.js main.78e9af38499895fecc3d.bundle.js.map
[0] multi ./node_modules/&#64;storybook/core/dist/server/common/polyfills.js ./node_modules/&#64;storybook/core/dist/server/preview/globals.js ./.storybook/config.js ./node_modules/webpack-hot-middleware/client.js?reload=true 64 bytes {main} [built]
[./.storybook/config.js] 368 bytes {main} [built]
[./app sync recursive \.stories\.(js|jsx)$] ./app sync \.stories\.(js|jsx)$ 5.07 KiB {main} [built]
[./node_modules/&#64;storybook/core/dist/server/common/polyfills.js] 120 bytes {vendors~main} [built]
[./node_modules/&#64;storybook/core/dist/server/preview/globals.js] 93 bytes {vendors~main} [built]
[./node_modules/&#64;storybook/core/node_modules/webpack/buildin/harmony-module.js] (webpack)/buildin/harmony-module.js 573 bytes {vendors~main} [built]
[./node_modules/&#64;storybook/core/node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 497 bytes {vendors~main} [built]
[./node_modules/&#64;storybook/react/dist/client/index.js] 1.26 KiB {vendors~main} [built]
[./node_modules/airbnb-js-shims/index.js] 40 bytes {vendors~main} [built]
[./node_modules/core-js/features/symbol/index.js] 251 bytes {vendors~main} [built]
[./node_modules/global/window.js] 232 bytes {vendors~main} [built]
[./node_modules/mockdate/src/mockdate.js] 1.78 KiB {vendors~main} [built]
[./node_modules/querystring-es3/index.js] 127 bytes {vendors~main} [built]
[./node_modules/regenerator-runtime/runtime.js] 23 KiB {vendors~main} [built]
[./node_modules/webpack-hot-middleware/client.js?reload=true] 7.68 KiB {vendors~main} [built]
    + 1352 hidden modules

ERROR in ./app/helpers/device.js
Module not found: Error: Cannot find module 'core-js/modules/es6.regexp.match'
 &#64; ./app/helpers/device.js 1:0-42 1:42-84
 &#64; ./app/helpers/index.js
 &#64; ./app/components/Button/index.js
 &#64; ./app/components/Button/__tests__/index.stories.js
 &#64; ./app sync \.stories\.(js|jsx)$
 &#64; ./.storybook/config.js
 &#64; multi ./node_modules/&#64;storybook/core/dist/server/common/polyfills.js ./node_modules/&#64;storybook/core/dist/server/preview/globals.js ./.storybook/config.js ./node_modules/webpack-hot-middleware/client.js?reload=true
...

์ด๊ฒƒ์ด ์œ ์šฉํ•œ ์ •๋ณด์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ @babel/polyfill ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ package.json์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

./.storybook/config.js์˜ ์˜ค๋ฅ˜
๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ : ์˜ค๋ฅ˜ : 'core-js / modules / web.dom.iterable'๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Storybook / vue 5.1.9๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Screen Shot 2019-06-22 at 7 26 48 PM

https://www.npmjs.com/package/babel-loader ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

package.json

  "dependencies": {
    "babel-loader": "^8.0.6"
  },
  "devDependencies": {
    "@storybook/addon-actions": "^5.1.11",
    "@storybook/addon-links": "^5.1.11",
    "@storybook/addons": "^5.1.11",
    "@storybook/react": "^5.1.11"
  }

์ด๊ฒƒ์€ ์ˆ˜์ •์ด ์•„๋‹Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ๋ชจ๋“  Storybook ํŒจํ‚ค์ง€ (์• ๋“œ์˜จ ํฌํ•จ)๋ฅผ v 5.0.6์œผ๋กœ ๋กค๋ฐฑํ•˜๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

(์•„๋ž˜์˜ React + Yarn ๋ช…๋ น์ด์ง€๋งŒ NPM / Vue๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ) :

๋จผ์ € :

yarn remove @storybook/react @storybook/addon-actions @storybook/addon-knobs @storybook/addon-links @storybook/addon-notes @storybook/addons @storybook/addon-storyshots 

๋’ค์— :

yarn add @storybook/[email protected] @storybook/[email protected] @storybook/[email protected] @storybook/[email protected] @storybook/[email protected] @storybook/[email protected] @storybook/[email protected]

์Šคํ† ๋ฆฌ ๋ถ์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ samme ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
ERROR in ./src/lib/helpers.js Module not found: Error: Cannot find module 'core-js/modules/web.dom.iterable' @ ./src/lib/helpers.js 16:0-43 @ ./src/components/Person.js @ ./src/components/Person.stories.js @ ./src sync \.stories\.js$ @ ./.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 (webpack)-hot-middleware/client.js?reload=true&quiet=true

์ด๋Š” nvm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ v12๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„์— ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

polyfill ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋ฏ€๋กœ ๋…ธ๋“œ๋ฅผ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ์ „์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๋‚˜๋Š” ๊ทธ ์ „์— ๋‚ด๊ฐ€ ์–ด๋–ค ๋…ธ๋“œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ 5.0.6์œผ๋กœ ๋กค๋ฐฑํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.์ด ํ”„๋กœ์ ํŠธ์˜ ์Šคํ† ๋ฆฌ ๋ถ์„ ์„ค์ •ํ•˜๋Š” ํฐ ์ด์œ ๋Š” ์ƒˆ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ์— ๋ชจ๋“  ๊ฒƒ์„ ๋ฐ€์—ˆ๋‹ค : https://github.com/netliferesearch/netlife2019/tree/storybook_setup_stories

ํŽธ์ง‘ : ๋…ธ๋“œ๋ฅผ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ–ˆ๋Š”๋ฐ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์‹œ๋„ ํ–ˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์กฐ๊ธˆ ์žƒ์–ด ๋ฒ„๋ ธ๋‹ค. ๋‚˜๋Š” ๊ณ„์† ์ฐพ์•„ ๋ณผ ๊ฒƒ์ด๋‹ค.

Nuxt.js v2.10.1 ์™ธ์— @storybook/vue 5.2.5๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. yarn storybook ์ž‘๋™ํ•˜์ง€๋งŒ yarn build ๋˜๋Š” ๊ธฐํƒ€ nuxt ๊ด€๋ จ ์ž‘์—…์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. yarn why core-js ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

$ yarn why core-js
yarn why v1.17.3
[1/4] ๐Ÿค”  Why do we have the module "core-js"...?
[2/4] ๐Ÿšš  Initialising dependency graph...
[3/4] ๐Ÿ”  Finding dependency...
[4/4] ๐Ÿšก  Calculating file sizes...
=> Found "[email protected]"
info Has been hoisted to "core-js"
info Reasons this module exists
   - Hoisted from "@storybook#addon-actions#core-js"
   - Hoisted from "@storybook#addon-knobs#core-js"
   - Hoisted from "@storybook#addon-links#core-js"
   - Hoisted from "@storybook#addon-viewport#core-js"
   - Hoisted from "@storybook#addons#core-js"
   - Hoisted from "@storybook#vue#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#api#core-js"
   - Hoisted from "@storybook#addons#@storybook#channels#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#client-api#core-js"
   - Hoisted from "@storybook#addon-viewport#@storybook#client-logger#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#components#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#core-events#core-js"
   - Hoisted from "@storybook#vue#@storybook#core#core-js"
   - Hoisted from "@storybook#addon-links#@storybook#router#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#theming#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#client-api#@storybook#channel-postmessage#core-js"
   - Hoisted from "@storybook#vue#@storybook#core#@storybook#node-logger#core-js"
   - Hoisted from "@storybook#vue#@storybook#core#@storybook#ui#core-js"
   - Hoisted from "@storybook#vue#@storybook#core#lazy-universal-dotenv#core-js"
   - Hoisted from "@storybook#addon-actions#@storybook#components#simplebar-react#simplebar#core-js"
info Disk size without dependencies: "7.02MB"
info Disk size with unique dependencies: "7.02MB"
info Disk size with transitive dependencies: "7.02MB"
info Number of shared dependencies: 0
=> Found "babel-runtime#[email protected]"
info This module exists because "@storybook#addon-actions#react-inspector#babel-runtime" depends on it.
info Disk size without dependencies: "7.68MB"
info Disk size with unique dependencies: "7.68MB"
info Disk size with transitive dependencies: "7.68MB"
info Number of shared dependencies: 0
=> Found "@nuxt/babel-preset-app#[email protected]"
info This module exists because "nuxt#@nuxt#webpack#@nuxt#babel-preset-app" depends on it.
info Disk size without dependencies: "7.68MB"
info Disk size with unique dependencies: "7.68MB"
info Disk size with transitive dependencies: "7.68MB"
info Number of shared dependencies: 0
=> Found "@vue/babel-preset-app#[email protected]"
info This module exists because "vuepress#@vuepress#core#@vue#babel-preset-app" depends on it.
info Disk size without dependencies: "7.68MB"
info Disk size with unique dependencies: "7.68MB"
info Disk size with transitive dependencies: "7.68MB"
info Number of shared dependencies: 0
=> Found "@babel/runtime-corejs2#[email protected]"
info This module exists because "vuepress#@vuepress#core#@vue#babel-preset-app#@babel#runtime-corejs2" depends on it.
info Disk size without dependencies: "7.68MB"
info Disk size with unique dependencies: "7.68MB"
info Disk size with transitive dependencies: "7.68MB"
info Number of shared dependencies: 0
=> Found "fbjs#[email protected]"
info This module exists because "@storybook#addon-links#@storybook#router#@reach#router#create-react-context#fbjs" depends on it.
info Disk size without dependencies: "4.37MB"
info Disk size with unique dependencies: "4.37MB"
info Disk size with transitive dependencies: "4.37MB"
info Number of shared dependencies: 0
โœจ  Done in 1.25s.

๊ทธ๋ž˜์„œ @frebro ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ yarn add -D [email protected]

๋ฐ ๐ŸŽ‰ : ์ž‘์—… ํ™˜๊ฒฝ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค : yarn storybook , yarn build ๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ž‘์—…์ด ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@rwam yarn add -D [email protected] ๋‚ด ์Šคํ† ๋ฆฌ ๋ถ 5.2.5 HTML ํ”„๋กœ์ ํŠธ thx dude :)

@ vue / cli ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” Vue

์˜ค๋ฅ˜ ์ •๋ณด :

'core-js': '^3.*.*':

ERROR in ./.storybook/config.js
Module not found: Error: Cannot find module 'core-js/modules/web.dom.iterable'

'core-js': '^2.*.*':

// many errors from storybook and addons
Cannot find module 'core-js/modules/***'

deps ์ •๋ณด :

"@vue/cli*": "^4.0.5", depends on 'core-js': '^3.*.*'
"@vue/cli*": "^3.*.*", depends on 'core-js': '^2.*.*'
"@storybook/vue": "^5.1.0", depends on 'core-js': '^3.*.*' with d.ts
"@storybook/vue": "^5.0.6", depends on 'core-js': '^2.*.*' but without d.ts

๋‚ด ์ž‘์—… deps :

"@vue/cli*": "^4.0.5", depends on 'core-js': '^3.*.*'
"@storybook/vue": "^5.1.0", depends on 'core-js': '^3.*.*' with d.ts

https://cli.vuejs.org/migrating-from-v3/#migrating -from-v3
Invalid Option: corejs is not a valid top-level option : -rm -rf node_modules .

๋‹น์‹ ๊ณผ ๋‹น์‹ ์˜ ์‚ฌ๋ž‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฑด๊ฐ•;)

Nuxt ํ”„๋กœ์ ํŠธ์—์„œ Storybook์ด ์ž‘๋™ํ•˜๋„๋กํ•˜๋Š” ๋” ๊ฐ•๋ ฅํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…์€ core-js์˜ ๋ฒ„์ „ ๋ถˆ์ผ์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Nuxt๋Š” ๊ธฐ๋ณธ ๋ฒ„์ „ 2์™€ Storybook ๋ฒ„์ „ 3์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด @ nuxt / babel-preset-app ์˜์ด ๋ฉ”๋ชจ๋ฅผ ๋”ฐ๋ผ์•ผ

์ฐธ๊ณ  : core-js @ 2 ๋ฐ core-js @ 3 ์€ ๋ชจ๋‘ Babel 7.4.0์—์„œ ์ง€์›๋˜๋ฏ€๋กœ core-js๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๊ณ  corejs ์˜ต์…˜์„ ํ†ตํ•ด ๋ฒ„์ „์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด nuxt.config.js ์—์„œ์ด ์—…๋ฐ์ดํŠธ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Nuxt 2.11.0์œผ๋กœ ์ž‘์—… ํ™˜๊ฒฝ์„ ๋‹ค์‹œ ์–ป์Šต๋‹ˆ๋‹ค .

yarn add --dev core-js<strong i="15">@3</strong> @babel/runtime-corejs3
export default {
  โ€ฆ
  build: {
    babel: {
      presets() {
        return [
          [
            '@nuxt/babel-preset-app',
            {
              corejs: { version: 3 }
            }
          ]
        ]
      }
    }
  }
}

nuxt ๋ฅผ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์œผ๋กœ ๋ฐœ๊ฒฌ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ •์  ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์„ ๋•Œ ์Šคํ† ๋ฆฌ ๋ถ (5.3.18)์„ gatsby v2์— ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. @brycehill์— ์˜ํ•ด ์ œ์•ˆ ์ด๋™ .babelrc๋Š” ์ผ .storybookํ•ฉ๋‹ˆ๋‹ค.

Nuxt ํ”„๋กœ์ ํŠธ์—์„œ Storybook์ด ์ž‘๋™ํ•˜๋„๋กํ•˜๋Š” ๋” ๊ฐ•๋ ฅํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ์ฑ…์€ core-js์˜ ๋ฒ„์ „ ๋ถˆ์ผ์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Nuxt๋Š” ๊ธฐ๋ณธ ๋ฒ„์ „ 2์™€ Storybook ๋ฒ„์ „ 3์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด @ nuxt / babel-preset-app ์˜์ด ๋ฉ”๋ชจ๋ฅผ ๋”ฐ๋ผ์•ผ

์ฐธ๊ณ  : core-js @ 2 ๋ฐ core-js @ 3 ์€ ๋ชจ๋‘ Babel 7.4.0์—์„œ ์ง€์›๋˜๋ฏ€๋กœ core-js๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๊ณ  corejs ์˜ต์…˜์„ ํ†ตํ•ด ๋ฒ„์ „์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด nuxt.config.js ์—์„œ์ด ์—…๋ฐ์ดํŠธ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Nuxt 2.11.0์œผ๋กœ ์ž‘์—… ํ™˜๊ฒฝ์„ ๋‹ค์‹œ ์–ป์Šต๋‹ˆ๋‹ค .

yarn add --dev core-js<strong i="16">@3</strong> @babel/runtime-corejs3
export default {
  โ€ฆ
  build: {
    babel: {
      presets() {
        return [
          [
            '@nuxt/babel-preset-app',
            {
              corejs: { version: 3 }
            }
          ]
        ]
      }
    }
  }
}

nuxt ๋ฅผ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์œผ๋กœ ๋ฐœ๊ฒฌ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋‹จํ•ด, ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๋‹ค!

@masives ๊ฐœ์ธ ๋น„ ์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์—์„œ ์ฐพ์„ ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์ฃผ์„ / .babelrc์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๊ฒŒ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Nvm. ํŽ˜์ด์ง€ ๋””๋ ‰ํ† ๋ฆฌ์—์žˆ๋Š” ์Šคํ† ๋ฆฌ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ์Šคํ† ๋ฆฌ๋ฅผ __stories__๋กœ ์ด๋™ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

Next.js 9.1.1-> Next.js 9.4.4๊ฐ€ ๋‚˜๋ฅผ ๊ดด๋กญ ํ˜”์Šต๋‹ˆ๋‹ค.

npm list core-js ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜๋ฉด Next๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„ core js์˜ babel ๋Ÿฐํƒ€์ž„์ด ๋ˆ„๋ฝ ๋œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ๋ˆ„๋ฝ ๋œ ํŒจํ‚ค์ง€๋ฅผ dev ์ข…์†์„ฑ ๋ฐ LO์— ๋‹ค์‹œ ์„ค์น˜ํ–ˆ๊ณ  ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

cc @ndelangen

core-js v2์—์„œ v3 ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋ฒ„์ „ 5.3.19์™€ ๋™์ผํ•œ ๋ฌธ์ œ

๋‚˜์—๊ฒŒ๋„ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. @denimamab ์ฒ˜๋Ÿผ ์ €๋Š” 5.3.19 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
rm ./package-lock.json
rm -rf ./node_modules
npm ์„ค์น˜

์ด์ œ npm ์‹คํ–‰ ์Šคํ† ๋ฆฌ ๋ถ ์ž‘ํ’ˆ

ํ•˜๋ฃจ๋ฅผ ๋ณด๋‚ธ ํ›„์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ์ด๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ ์ˆ˜๋งŽ์€ GH ๋ฌธ์ œ ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ ๋œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ๋„ํ•ด ๋ณด์•˜์ง€๋งŒ ํ•˜๋‚˜๋งŒ "์šฉ์ธ ํ•  ์ˆ˜์žˆ๋Š”"์„ฑ๊ณต์„ ๊ฑฐ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๊ทธ ์ดํ›„๋กœ์ด ๋ชจ๋“  ๊ฒƒ์„ ํ•œ๊ณณ์— ๋ชจ์œผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜…


ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ ๊ธฐ์กด .babelrc

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ],
  "plugins": [
    "@babel/plugin-transform-modules-commonjs",
    "@babel/plugin-transform-object-assign",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-optional-chaining",
    "@babel/plugin-transform-runtime"
  ],
  "sourceRoot": "./"
}


๋ฃจํŠธ .browserslistrc

last 2 versions
> 1%
IE >= 11


๊ด€๋ จ์„ฑ (๋Œ€๋ถ€๋ถ„) package.json

"scripts": {
  "build:storybook": "build-storybook --quiet -o ./dist/storybook",
  "storybook": "start-storybook -p 6006"
},
"dependencies": {
  "@babel/core": "7.3.4",
  "@babel/plugin-proposal-class-properties": "7.3.4",
  "@babel/plugin-proposal-optional-chaining": "7.7.5",
  "@babel/plugin-transform-modules-commonjs": "7.2.0",
  "@babel/plugin-transform-object-assign": "7.2.0",
  "@babel/plugin-transform-runtime": "7.6.2",
  "@babel/polyfill": "7.2.5",
  "@babel/preset-env": "7.3.4",
  "@babel/preset-react": "7.0.0",
  "babel-loader": "8.0.6",
  "react": "16.10.2",
  "react-dom": "16.10.2",
  "webpack": "4.43.0",
  "webpack-cli": "3.3.11"
},
"devDependencies": {
  "@storybook/addon-a11y": "5.3.19",
  "@storybook/addon-actions": "5.3.19",
  "@storybook/addon-docs": "5.3.19",
  "@storybook/addon-knobs": "5.3.19",
  "@storybook/addon-links": "5.3.19",
  "@storybook/addons": "5.3.19",
  "@storybook/react": "5.3.19",
  "@storybook/source-loader": "5.3.19",
  "acorn": "7.2.0",
  "storybook-design-token": "0.7.3",
  "webpack-dev-server": "3.10.3"
}


์‹œ์Šคํ…œ ์ •๋ณด

  System:
    OS: macOS 10.15.7
    CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
    Shell: 5.0.2 - /usr/local/bin/bash (via homebrew)
  Binaries:
    Node: 10.18.0
    npm: 6.13.4
  Browsers:
    Chrome: 86.0.4240.193
    Firefox: 80.0.1
    Safari: 14.0

ํ”„๋กœ์ ํŠธ ์ƒํƒœ ๋ฐ ์ „์ œ ์กฐ๊ฑด

  • ๋ชจ๋“  [์šฐ๋ฆฌ ํŒ€์˜] webpack / babel ํŒจํ‚ค์ง€๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ์œ„ํ•œ ๋›ฐ์–ด๋‚œ ๊ฐœ๋ณ„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ (babel์€ ๋‚ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋ณ„๋„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์—์„œ v7.xx ์ž„) ์•„์ง ie11 ํ…Œ์ŠคํŠธ๋กœ ์ธํ•ด ํ…Œ์ŠคํŠธ์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜๋ถ€ ๊ตฌ์กฐ. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ corejs ๋ฒ„์ „ 3์„ ์ข…์†์„ฑ์œผ๋กœ ๋„์ž…ํ•˜๊ณ  useBuiltIns: 'usage' ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” @babel/polyfill ์˜ ์ˆ˜๋™ ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  useBuiltIns ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ณง ๋ณ‘ํ•ฉ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ˆ˜์ • ์‚ฌํ•ญ์œผ๋กœ ์ œ์•ˆํ•˜๊ณ  ํ™•์ธํ–ˆ๋“ฏ์ด ํ˜„์žฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— corejs๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ํฌํ•จํ•˜์ง€ ์•Š์„ ์ฃผ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” v5.3.19์—์„œ ์ตœ์‹  v6.xx๋กœ ์šฐ๋ฆฌ์˜ ์Šคํ† ๋ฆฌ ๋ถ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” webpack / babel ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ _another_ ๋ˆˆ์— ๋„๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ) ๋‚ด ์ด์œ ๋Š” ์•„๋ž˜์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—๋Š” ๊ธฐ๋ณธ ์•ฑ์— ๋Œ€ํ•œ ๋ฃจํŠธ .babelrc (์œ„ ์ฐธ์กฐ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์€ @babel/preset-env ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ฃจํŠธ .browserslistrc (์œ„ ์ฐธ์กฐ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ polyfill ์‚ฌ์šฉ๋Ÿ‰์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์˜ ๋ฉ”์ธ ๋ผ์ธ ๋ธŒ๋žœ์น˜์—๋Š” .storybook/.babelrc ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ๋‚ด๋ถ€ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ ์šฉ์œผ๋กœ ๋งŒ ์Šคํ† ๋ฆฌ ๋ถ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง์€ ์ฃผ๋กœ ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ €๋กœ chrome์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— polyfill์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ณ„์‹œ๋Š” ์‹ค์ œ๋กœ ์ตœ์ข… ํ•ด๊ฒฐ์ฑ…์— ๊ธฐ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” _am_ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ† ๋ฆฌ ๋ถ ์›นํŒฉ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธ€๊ผด / ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์Šคํ† ๋ฆฌ ๋ถ ๋ฌธ์ œ์— ์„ค๋ช… ๋œ ์ด์œ ๋กœ .js ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ํ•ต์‹ฌ ๊ทœ์น™์„ ์ˆ˜์ •ํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ •์  ์Šคํ† ๋ฆฌ ๋ถ ์‚ฌ์ดํŠธ๋ฅผ ์ƒ์„ฑ ํ•  ๋•Œ๋งŒ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํฌํ•จ ๋œ dev-server๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์กฐ๊ธฐ ์ˆ˜์ • ์‹œ๋„

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ์ดˆ๊ธฐ ์‹œ๋„์˜ ๋Œ€๋ถ€๋ถ„์€ ๋ฃจํŠธ .babelrc (์œ„ ์ฐธ์กฐ)์—์„œ ์˜ต์…˜์„ ์„ค์ •ํ•˜์—ฌ ๋ฐ”๋ฒจ ( build-storybook ๋„๊ตฌ๋กœ ์‹คํ–‰ ๋จ)๊ณผ ์˜์‚ฌ ์†Œํ†ต์„ ์‹œ๋„ํ•˜๊ณ  ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋žœ์Šค ํŒŒ์ผ. ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์•ˆํ•œ useBuiltIns , sourceType ๋“ฑ์˜ ๊ตฌ์„ฑ์ด ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ „์ฒด clean-npm-cache-remove-node-modules-and-package-lock-then-npm-install ๊ฒฝ๋กœ๋ฅผ ์•„๋ฌด ์†Œ์šฉ์ด์—†์ด ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค (๊ทธ _did_๋กœ ์ธํ•ด deps์˜ ์ผ๋ถ€ deps๊ฐ€ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ ๋˜๋”๋ผ๋„).

๋งˆ์ง€๋ง‰ ํ•ด๊ฒฐ์ฑ…

์ฒ˜์Œ์—๋Š” ์‚ฌ์šฉ์ž ์ •์˜ .storybook/.babelrc ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ–ˆ์ง€๋งŒ ์˜ต์…˜์ด ๋ถ€์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ํ•ด๋‹น ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  extends ์†์„ฑ์„ ํ†ตํ•ด ๋ฃจํŠธ .babelrc ์™€ ์กฐํ™”๋กญ๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฒฝ์— ๋ถ€๋”ช ํ˜”์ง€๋งŒ ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฃจํŠธ ๋ฐ”๋ฒจ ๊ตฌ์„ฑ์„ ์Šคํ† ๋ฆฌ ๋ถ ํŠน์ • ๊ตฌ์„ฑ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋™ํ•˜๋ฉด ์ •์  ์‚ฌ์ดํŠธ ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ ๋  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž˜๋ชป๋œ ํŠธ๋žœ์Šค ํŒŒ์ผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค (์ผ๋ถ€ ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ๋‹ค์‹œ ๋‚ด ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ๊ฐ’์ด undefined ์ตœ์ข… ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ํŒŒ์ผ). ์Šคํ† ๋ฆฌ ๋ถ์— ํด๋ฆฌ ํ•„์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด .storybook/.babelrc ์—์„œ @babel/preset-env ์‚ฌ์ „ ์„ค์ •์„ ๋ชจ๋‘ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. HUZZAH, ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์›๋ž˜ ๊ตฌ์„ฑ์€ ์•ฑ์— ์œ ์ง€๋˜์–ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์„ .storybook/.babelrc-ci ํ•˜๊ณ  ์›๋ž˜ ๋ฃจํŠธ ๊ตฌ์„ฑ์„ ๋ณต์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ CI ํŒŒ์ดํ”„ ๋ผ์ธ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ CI ๊ตฌ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ์ •์  ์‚ฌ์ดํŠธ ๋นŒ๋“œ ์ „์— -ci ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ž˜๋ผ๋‚ด๋„๋ก ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผํ–ˆ์ง€๋งŒ ์ด๋Š” ์‚ฌ์†Œํ•œ ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•œ ์ถ”์ธก

์ด ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ๋‚ด ํŒจํ‚ค์ง€์™€ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ž์ฃผ ๊ฒ€์‚ฌํ•˜๊ฒŒ๋˜์—ˆ๊ณ , ์Šคํ† ๋ฆฌ ๋ถ v5.3.19์™€ ๋ชจ๋“  ์• ๋“œ์˜จ์ด corejs v3.xx, ๊ธฐ์กด @babel/polyfill ๋ฐ ๋‹ค๋ฅธ ๋ฐ”๋ฒจ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. deps๋Š” corejs v2.xx์— ์˜์กดํ–ˆ์Šต๋‹ˆ๋‹ค! ์ ์–ด๋„ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” v2์˜ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ณตํ†ต ๋ถ„๋ชจ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ฑ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๊ฒฝํ—˜ ํ•œ ์˜ค๋ฅ˜๊ฐ€ es.array.iterator ์™€ ๊ฐ™์€ ๋ชจ๋“ˆ์„ ์ฐธ์กฐํ•˜๊ณ  v2๋Š” es6.array.iterator ์™€ ๊ฐ™์€ ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ babel / corejs ๊ตฌ์„ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœํ•˜๋Š” ๊ฒฝ์šฐ ์Šคํ† ๋ฆฌ ๋ถ dep์ด ์–ด๋–ป๊ฒŒ ์ถฉ๋Œํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋Ÿด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ / all storybook-babel / installed babel / storybook-corejs / installed-corejs๊ฐ€ ๊ธฐ์กด .babelrc ์ฐพ๊ณ  ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ ๊ตฌ์„ฑ์„ ์Šคํ† ๋ฆฌ ๋ถ๋ณ„ ๊ตฌ์„ฑ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ํ•ด๊ฒฐ๋˜๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ฒฝ๋กœ? ๐Ÿคทโ€โ™‚๏ธ

๊ฒฐ๋ก 

์ด ๋ชจ๋“  ๋ธ”๋ ˆ ๋”๋ง ํ›„์—๋„ ๊ผผ์ง๋„ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜‚

๋Œ€์ฒด๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋›ฐ์–ด ๋‚ด๋ ค์•ผํ•˜๋Š” ๋†๊ตฌ๋Œ€์— ๊ฐ๊ฒฉํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์•„๋งˆ๋„ ๋‚ด ์ƒํ™ฉ์€ ๋‹ค์†Œ ๋…ํŠนํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์•ž์„œ ์–ธ๊ธ‰ ํ•œ ๋ฐ”๋ฒจ / ์›นํŒฉ / ์Šคํ† ๋ฆฌ ๋ถ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•ฉ์ณ์ง„ ํ›„์—๋Š” ๋ชจ๋‘ ๋œฏ์–ด ๋‚ผ ์ˆ˜์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๊ฐ™์€ ๋ฌธ์ œ๋กœ ๊ณ ํ†ต๋ฐ›๋Š” ์ ์–ด๋„ ํ•œ ์‚ฌ๋žŒ์—๊ฒŒ ์ด๊ฒƒ์ด ํฅ๋ฏธ ๋กœ์› ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ณ„์†ํ•ด์„œ @shilman ๊ณผ @ndelangen ์ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํˆฌ์ž ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค . ๐Ÿ‘‹

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰