Storybook: Addon-docs゜ヌスドキュメントブロックTypescriptのサポヌト

䜜成日 2019幎08月20日  Â·  69コメント  Â·  ゜ヌス: storybookjs/storybook

バグを説明する
テクニカルプレビュヌガむドに蚘茉されおいるように、ドキュメントプリセットにsourceLoaderOptions: nullを枡さずにtypescriptを䜿甚するず、次の゚ラヌが発生したす。

Variable '__MODULE_DEPENDENCIES__' implicitly has an 'any[]' type

残念ながら、これはストヌリヌブックtsconfig.jsonを"noImplicitAny": falseを䜿甚するように曎新しおも修正されたせん。

再珟するには
動䜜を再珟する手順

  1. Typescriptずドキュメントプリセットを䜿甚しおaddon-docsストヌリヌを曞く
  2. ストヌリヌブックを実行する

予想される行動
ドキュメントペヌゞは通垞どおり読み蟌たれ、ストヌリヌのコヌドスニペットを利甚できたす。

スクリヌンショット
該圓する堎合は、問題の説明に圹立぀スクリヌンショットを远加しおください。

コヌドスニペット
presets.js 

{
  name: '@storybook/addon-docs/react/preset',
  options: {
    sourceLoaderOptions: null,
  },
}

システム
環境情報

システム
OSmacOS 10.14.5
CPU16x64 IntelRCoreTMi9-9880H CPU @ 2.30GHz
バむナリ
ノヌド10.16.0- / usr / local / opt / node @ 10 / bin / node
ダヌン1.17.3-〜 / workspace / component-library / node_modules / .bin / yarn
npm6.9.0- / usr / local / opt / node @ 10 / bin / npm
ブラりザ
Chrome76.0.3809.100
Safari12.1.1
npmPackages
@ storybook / addon-a11y^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / addon-actions^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / addon-docs^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / addon-knobs^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / addon-links^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / addon-viewport^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / addons^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / prefix-scss1.0.2 => 1.0.2
@ storybook / prefix-typescript1.1.0 => 1.1.0
@ storybook / react^ 5.2.0-beta.36 => 5.2.0-beta.38
@ storybook / theming^ 5.2.0-beta.36 => 5.2.0-beta.38

docs storysource source compatibility with other tools has workaround inactive typescript

最も参考になるコメント

awesome-typescript-loaderを䜿甚する堎合の䞀時的な解決策

/* tsconfig.json */
{
  "compilerOptions": { },
  "awesomeTypescriptLoaderOptions": {
    "ignoreDiagnostics": [7005]
  }
}

理想的ではありたせんが、機胜したす。

党おのコメント69件

ありがずう@ enagy27 ここには少なくずもいく぀かのオプションがありたす。

1 source-loaderはtypescriptに適したコヌドを出力できたす
2ナヌザヌはtypescriptを別の方法で構成できたすこれは私たちのモノリポゞトリでは芋おいたせん
3 source-loaderは回避策ずしお@ts-ignoreを出力できたす

私は、3番目のオプションが最も簡単に開始できるず考えおいたす。最初のオプションはおそらく長期的に最適です。

グレヌトシヌザヌの幜霊!! この問題を参照するPR7831を含むhttps://github.com/storybookjs/storybook/releases/tag/v5.2.0-beta.39をリリヌスしたした。 今すぐアップグレヌドしおお詊しください

このプレリリヌスは@next NPMタグにありたす。

この問題を解決したす。 ただやるこずが残っおいるず思われる堎合は、再床開いおください。

@ enagy27には

@shilman絶察に 今それを詊しおみおください。 ありがずうございたした

@shilmanはただbeta.39これらの゚ラヌを確認しおいたす😞

ERROR in /Users/eric.nagy/workspace/component-library/src/elements/tag/tag.stories.tsx
./src/elements/tag/tag.stories.tsx
[tsl] ERROR in /Users/eric.nagy/workspace/component-library/src/elements/tag/tag.stories.tsx(69,52)
      TS7005: Variable '__MODULE_DEPENDENCIES__' implicitly has an 'any[]' type.

ERROR in /Users/eric.nagy/workspace/component-library/src/elements/tag/tag.stories.tsx
./src/elements/tag/tag.stories.tsx
[tsl] ERROR in /Users/eric.nagy/workspace/component-library/src/elements/tag/tag.stories.tsx(74,3)
      TS2300: Duplicate identifier 'parameters'.

npx -p @storybook/cli<strong i="10">@next</strong> sb info

Environment Info:

  System:
    OS: macOS 10.14.5
    CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
  Binaries:
    Node: 10.16.0 - /usr/local/opt/node@10/bin/node
    Yarn: 1.17.3 - ~/workspace/component-library/node_modules/.bin/yarn
    npm: 6.9.0 - /usr/local/opt/node@10/bin/npm
  Browsers:
    Chrome: 76.0.3809.100
    Safari: 12.1.1
  npmPackages:
    @storybook/addon-a11y: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/addon-actions: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/addon-docs: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/addon-knobs: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/addon-links: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/addon-viewport: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/addons: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/preset-scss: 1.0.2 => 1.0.2 
    @storybook/preset-typescript: 1.1.0 => 1.1.0 
    @storybook/react: ^5.2.0-beta.39 => 5.2.0-beta.39 
    @storybook/theming: ^5.2.0-beta.39 => 5.2.0-beta.39

これが゜ヌスロヌダヌにあるずするず、それを個別にむンストヌルしおからプリセットに取り蟌む必芁がありたすか、それずもプリセットの新しいリリヌスが必芁ですか

@ enagy27ここの手順を䜿甚しおロヌドされた゜ヌスを確認し、ロヌドされた゜ヌスに7831の倉曎が含たれおいるかどうかを確認できたすか  .mdxを.tsx眮き換えれば、残りが適甚されたす

https://github.com/storybookjs/storybook/blob/next/addons/docs/docs/faq.md#how -do-i-debug-my-mdx-story

@shilman sourceLoaderOptions: nullが有効な堎合にのみサヌバヌを起動できたす😞それ以倖の堎合、ビルドが倱敗するずサヌバヌの起動が停止し、ブラりザヌ内の゜ヌスを怜査できたせん。 最初に倱敗したビルドでサヌバヌをバむパスしお起動するコマンドラむンオプションはありたすか

おっず この問題を参照するPR7845を含むhttps://github.com/storybookjs/storybook/releases/tag/v5.2.0-beta.40をリリヌスしたした。 今すぐアップグレヌドしおお詊しください

このプレリリヌスは@next NPMタグにありたす。

@ enagy27倉曎をマヌゞしおリリヌスしたした。 詊しおみる

@shilmanそのような運はありたせん😞私はロヌカルで実隓しおいお、コツを぀かむこずができないようです。 私はそれらすべおをだたしおas anyずしおマヌクしたしたが、倉数parameters重耇に぀いお䞍平を蚀っおいるようです。これにより、 __STORY__が適切に゚スケヌプされおいないのではないかず思いたす。 しかし、それがTSではなくJSでどのように機胜するかわかりたせん...私は困惑しおいたす

私もこの問題を経隓しおいたすが、残念ながら远加のコンテキストはあたりありたせん。

ここでのもう1぀の解決策は、ストヌリヌブックがロヌドするtsconfig.jsファむルプロゞェクトのtsconfigたたは.storybook/tsconfig.js 私は思うのすべおの「厳密な」タむプチェックルヌルをオヌバヌラむドするこずです。

これらは、有効になっおいないこずを確認するためのものだず思いたす。
image

@libetlあなたが本圓に忙しいのは知っおいたすが、これを芋おいただければ玠晎らしいず思いたす。

@JonKroneを実行するず、[ドキュメント]タブに゜ヌスコヌドが衚瀺されたすか これらの倉曎を行いたしたが、ただ゜ヌスが衚瀺されおいたせん😞

awesome-typescript-loaderを䜿甚する堎合の䞀時的な解決策

/* tsconfig.json */
{
  "compilerOptions": { },
  "awesomeTypescriptLoaderOptions": {
    "ignoreDiagnostics": [7005]
  }
}

理想的ではありたせんが、機胜したす。

@shilmanこれはあなたが探しおいるものですか 参考たでに、これはTS7005を無芖せずに構築するこずはできたせん暗黙的なものはありたせん。

  // @ts-ignore
  var withSourceLoader = require('@storybook/source-loader/preview').withSource;
  // @ts-ignore
  var __SOURCE_PREFIX__ = "/home/user/projects/real/ts/my-blog-react/src/graphql";
  // @ts-ignore
  var __STORY__ = "import React from \"react\";\n\nimport { ApolloProvider } from \"@apollo/react-hooks\";\nimport { storiesOf } from \"@storybook/react\";\n\nimport { Posts } from \"../views/Posts/index\"; // ! Fix coupling\nimport { PostContent } from \"../views/PostContent\"; // ! Fix coupling\nimport { withPostContentQuery } from \"./components/withPostContentQuery\";\nimport { withPostsQuery } from \"./components/withPostsQuery\";\nimport * as fakeQl from \"./fakeql/fakeql-endpoints\";\nimport apolloClientFactory from \"./apollo\";\n\n// FIXME: #coupling - find a way to not depend on Post and Container, probably fakes - but not good enough.\n\nconst apolloClient = apolloClientFactory(fakeQl.normalApiEndpoint);\nconst PostContentQuery = withPostContentQuery(PostContent);\nconst PostsQuery = withPostsQuery(Posts);\n\n// ~~~ Posts ~~~\nstoriesOf(\"GraphQL\", module).add(\"PostsQuery\", () => (\n  <ApolloProvider client={apolloClient}>\n    <PostsQuery routeHandler={() => null} />\n  </ApolloProvider>\n));\n\n// ~~~ PostContent ~~~\nstoriesOf(\"GraphQL\", module).add(\"PostContentQuery\", () => (\n  <ApolloProvider client={apolloClient}>\n    <PostContentQuery postId=\"1\" />\n  </ApolloProvider>\n));\n";
  // @ts-ignore
  var __ADDS_MAP__ = {"graphql--postsquery":{"startLoc":{"col":33,"line":20},"endLoc":{"col":1,"line":24},"startBody":{"col":47,"line":20},"endBody":{"col":1,"line":24}},"graphql--postcontentquery":{"startLoc":{"col":33,"line":27},"endLoc":{"col":1,"line":31},"startBody":{"col":53,"line":27},"endBody":{"col":1,"line":31}}};
  // @ts-ignore
  var __MAIN_FILE_LOCATION__ = "/root.stories.tsx";
  // @ts-ignore
  var __MODULE_DEPENDENCIES__ = [];
  // @ts-ignore
  var __LOCAL_DEPENDENCIES__ = {};
  // @ts-ignore
  var __IDS_TO_FRAMEWORKS__ = {};

  import React from "react";

import { ApolloProvider } from "@apollo/react-hooks";
import { storiesOf } from "@storybook/react";

import { Posts } from "../views/Posts/index"; // ! Fix coupling
import { PostContent } from "../views/PostContent"; // ! Fix coupling
import { withPostContentQuery } from "./components/withPostContentQuery";
import { withPostsQuery } from "./components/withPostsQuery";
import * as fakeQl from "./fakeql/fakeql-endpoints";
import apolloClientFactory from "./apollo";

// FIXME: #coupling - find a way to not depend on Post and Container, probably fakes - but not good enough.

const apolloClient = apolloClientFactory(fakeQl.normalApiEndpoint);
const PostContentQuery = withPostContentQuery(PostContent);
const PostsQuery = withPostsQuery(Posts);

// ~~~ Posts ~~~
storiesOf("GraphQL", module).addParameters({ storySource: { source: __STORY__, locationsMap: __ADDS_MAP__ } }).addDecorator(withSourceLoader(__STORY__, __ADDS_MAP__,__MAIN_FILE_LOCATION__,__MODULE_DEPENDENCIES__,__LOCAL_DEPENDENCIES__,__SOURCE_PREFIX__,__IDS_TO_FRAMEWORKS__)).add("PostsQuery", () => (
  <ApolloProvider client={apolloClient}>
    <PostsQuery routeHandler={() => null} />
  </ApolloProvider>
));

// ~~~ PostContent ~~~
storiesOf("GraphQL", module).addParameters({ storySource: { source: __STORY__, locationsMap: __ADDS_MAP__ } }).addDecorator(withSourceLoader(__STORY__, __ADDS_MAP__,__MAIN_FILE_LOCATION__,__MODULE_DEPENDENCIES__,__LOCAL_DEPENDENCIES__,__SOURCE_PREFIX__,__IDS_TO_FRAMEWORKS__)).add("PostContentQuery", () => (
  <ApolloProvider client={apolloClient}>
    <PostContentQuery postId="1" />
  </ApolloProvider>
));


@ 0b10詊しおみたす、ありがずうございたす 珟圚、これらの行をすべお無芖しおいたすが、 tsconfig.jsonも倉曎するこずは考えおいたせんでした🀔

storybook-react-routerを1.0.6に曎新した埌、ここで゚ラヌが発生したした。これには問題がありたすgvaldambrini / storybook-router42ここでぱラヌが発生したせんstorybook-router゚ラヌはおそらく関連しおいたせんでした。以䞋のコメントを参照しおください 

TSXストヌリヌで「利甚可胜なコヌドがありたせん」、MDXは正垞に動䜜し、結果は@ 0b10のストヌリヌず同じ/正確に芋えたす

  // @ts-ignore
  var withSourceLoader = require('@storybook/source-loader/preview').withSource;
  // @ts-ignore
  var __SOURCE_PREFIX__ = "C:\\Workspace\\application-ui\\src\\components\\atoms\\container";
  // @ts-ignore
  var __STORY__ = "import { storiesOf } from \"@storybook/react\";\nimport React, { ReactElement } from \"react\";\n\nimport { Container } from \"components\";\n\nconst stories = storiesOf(\"Atoms/Container\", module).addParameters({ component: Container });\n\nstories.add(\"Default\", (): ReactElement => <Container>Hello</Container>);\n";
  // @ts-ignore
  var __ADDS_MAP__ = {};
  // @ts-ignore
  var __MAIN_FILE_LOCATION__ = "/Container.stories.tsx";
  // @ts-ignore
  var __MODULE_DEPENDENCIES__ = [];
  // @ts-ignore
  var __LOCAL_DEPENDENCIES__ = {};
  // @ts-ignore
  var __IDS_TO_FRAMEWORKS__ = {};

  import { storiesOf } from "@storybook/react";
import React, { ReactElement } from "react";

import { Container } from "components";

const stories = storiesOf("Atoms/Container", module).addParameters({ storySource: { source: __STORY__, locationsMap: __ADDS_MAP__ } }).addDecorator(withSourceLoader(__STORY__, __ADDS_MAP__,__MAIN_FILE_LOCATION__,__MODULE_DEPENDENCIES__,__LOCAL_DEPENDENCIES__,__SOURCE_PREFIX__,__IDS_TO_FRAMEWORKS__)).addParameters({ component: Container });

stories.add("Default", (): ReactElement => <Container>Hello</Container>);

config.jsがdocs: DocsPageだったので曎新したした

    docs: {
        container: DocsContainer,
        page: DocsPage,
    },

プリセット

module.exports = [
    {
        name: "@storybook/addon-docs/react/preset",
        options: {
            configureJSX: true,
        },
    },
];

Webpackの蚭定、おそらく必芁ありたせんか

    config.module.rules.push({
        exclude: /node_modules/,
        test: /\.(ts|tsx)$/,
        use: [
            {
                loader: require.resolve("babel-loader"),
                options: {
                    presets: [["react-app", { flow: false, typescript: true }]],
                },
            },
            {
                loader: require.resolve("react-docgen-typescript-loader"),
            },
        ],
    });

    config.module.rules.push({
        enforce: "pre",
        include: [path.resolve(__dirname, "../src")],
        loader: require.resolve("@storybook/source-loader"),
        test: /\.(stories|story)\.[tj]sx?$/,
    });

tsconfig.jsonには"noImplicitAny": true含たれ、 ignoreDiagnosticsは含たれたせん😕

rc.4問題は発生しなくなりたしたが、゜ヌスはありたせん😞これも6641でマヌクされおいるように芋えたすが、゚ラヌが発生しなくなったため、この問題は重耇しおいる可胜性がありたす

回避策を芋぀けたした

  • 代わりに䜿甚したのsourceLoaderOptions: null私が䜿甚し、 transpileOnly: true私にtsLoaderOptions
  • トップレベルのparameters倉数が存圚できない8055の回避策に埓っおください
  • 䜕らかの理由で、 as 'optionA' | 'optionB'などの右偎のステヌトメントの䜿甚はここでは倱敗し、巊偎の型宣蚀に倉換する必芁がありたした。

これは倱敗したす

const colors = {
  primary: 'primary',
  secondary: 'secondary',
};

const color = radios('color', colors, colors.primary) as ButtonColor;

これは機胜したす

const colors: Record<string, ButtonColor> = {
  primary: 'primary',
  secondary: 'secondary',
};

const color = radios('color', colors, colors.primary);

埌から考えるず、これは型掚論に関する理解できるsource-loader問題のようです🀔ずにかく、これが圹立぀こずを願っおいたす

@ enagy27あなたはこれを理解するために@libetlが5.3のある時点でオンラむンに戻るこずを期埅しおいたす。これらの回避策が䞍芁になるように、 source-loaderアップグレヌドするだけです。 成功を祈っおいる 🀞

やあ。 誰かがreacttypescriptずドキュメントを含むストヌリヌブックが機胜しおいるサンプルリポゞトリを提䟛できたすか

@simonhossこれは玠晎らしいアむデアです、私はこれを機胜させるのに本圓に苊劎しおいたす。

私も😄

TS呜什にあなたを指すreact-docgen-typescript-loaderむンストヌルするず蚀うどのaddon-infoしかし、ドキュメントの以前はそれが蚀うはありたせんaddon-docsのための代替であるaddon-info  TSでこれが機胜するセットアップを確認するか、TSでaddon-docsをセットアップするための明確な手順を1か所で確認するず非垞に圹立ちたす。

貢献しお助けおくれおうれしいですが、最初にこれらの郚分がどのように組み合わされるかを理解する必芁がありたす 👍

ドキュメントがリリヌスされたので、cra -ts-kitchen-sinkを曎新しお、構成のためにすべお同じペヌゞにいるこずを確認するのに少し時間がかかるかもしれたせん🙂それは1週間かそこらかもしれたせん...今のずころ蚭定を提䟛したす

.storybook / addons.js

import '@storybook/addon-knobs/register';
import '@storybook/addon-a11y/register';
import '@storybook/addon-actions/register';

.storybook / config.js

import { configure, addDecorator, addParameters } from '@storybook/react';
import { withA11y } from '@storybook/addon-a11y';
import { withKnobs } from '@storybook/addon-knobs';

import theme from './theme';
import '../stylesheets/gusto.scss';

// This file overrides styles from the global Gusto
// styles which interfere with Storybook styles
import './storybook.scss';

// Is your addon not showing up? Try looking for a `register` function
// and add it to .storybook/addons.js
addDecorator(withA11y);
addDecorator(withKnobs);

addParameters({
  // storybook built-in
  // more info available here:
  // https://storybook.js.org/docs/configurations/options-parameter/
  options: {
    showPanel: true,
    panelPosition: 'right',
    // https://storybook.js.org/docs/configurations/theming/
    theme,
  },
  knobs: {
    escapeHTML: false,
  },
  // viewport structure here:
  // https://github.com/storybookjs/storybook/tree/master/addons/viewport#use-custom-set-of-devices
  // viewport: {
  //   defaultViewport: 'iphone6',
  //   type: 'mobile',
  // },
});

configure(require.context('../src', true, /\.stories\.(js|jsx|ts|tsx|mdx)$/), module);

.storybook / prefixs.js

const path = require('path');

module.exports = [
  '@storybook/preset-scss',
  {
    name: '@storybook/preset-typescript',
    options: {
      // Point the loader here to override the root "noEmit" compilerOption
      tsLoaderOptions: {
        // Transpile only means no type-checking from storybook, which greatly speeds up
        // builds. Types will be checked as part of the normal build process. This may also
        // be necessary for loading story source
        transpileOnly: true,
        configFile: path.resolve(__dirname, 'tsconfig.json'),
      },
      // We must use our config to ensure props and their comments are loaded
      tsDocgenLoaderOptions: {
        tsconfigPath: path.resolve(__dirname, 'tsconfig.json'),
        // https://github.com/styleguidist/react-docgen-typescript#parseroptions
        propFilter: prop => {
          if (prop.parent) {
            return !prop.parent.fileName.includes('node_modules/@types/react/');
          }

          return true;
        },
      },
    },
  },
  '@storybook/addon-docs/react/preset',
];

.storybook / theme.js

これは瀟内にあるため共有できたせんが、 config.js参照されおいたす。

.storybook / tsconfig.json

このファむルは、ストヌリヌブックでは意味をなさないルヌトtsconfig.json構成を削陀するためだけに䜿甚されたす。

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "noEmit": false
  }
}

こんにちは@ enagy27-これをありがずう。 私はこれをカスタムwebpack構成で動䜜させたした。 奇劙な理由でtypescriptプリセットを䜿甚するず、ストヌリヌブックにアセットをむンポヌトできなくなりたす。぀たり、-cssファむルです。

私が盎面しおいる小さな問題の1぀は、私の小道具テヌブルが次のような型を掚枬できないこずです。

SomeType['property']珟圚、テヌブルにナニオンではなくanyれおいたすが、これを回避する方法があるのではないかず思いたす。

こんにちは、@ enagy27。 これをありがずう。 私はあなたが共有した蚭定でこれを動䜜させたした。しかし、ただいく぀かの問題がありたす。 tsxでコンポヌネントを䜜成するず、コンポヌネントの説明ず小道具の説明を生成できたせん。 しかし、それはjsxで動䜜したす。
image
image
image

こんにちは@zerofront。 私はこの正確なコメントパタヌンに埓わなければなりたせんでした

コンポヌネントの説明

/**
 * This is a component description and should sit directly above your component
 */

支柱の説明

/** I am a prop description and should sit directly above the interface property i am describing */

@ enagy27実際、私はあなたが私の最初の写真に瀺したコメントパタヌンに埓っおいたした

@zerofrontでは、コンポヌネントにexport const Button: React.FC<BaseButtonProps> = props => {...}䜿甚できたす

👆TSずdocgenを䜿甚したセットアップが䜕らかの理由でゞェネリックで機胜しないため、ここで問題が発生したした8143

@zerofront私はたさにあなたの問題を抱えおいたす。 Buttonドキュメントの小道具セクションで、StorybookはBaseButtonPropsむンタヌフェむスの代わりにdefaultProps印刷しおいたす。 そしお、私も説明が恋しいです。 字幕に぀いおは、次のようにストヌリヌファむルに远加できたす。

export default {
  title: 'Button',
  component: Button,
  parameters: {
    componentSubtitle: 'Handy status label',
  },
}

@zerofront @ enagy27が蚀ったこずに加えお。
* .stories.tsxを操䜜するには、次の構成のようなものを远加する必芁がありたす。

.storybook / webpack.config.js

const path = require('path');
const include = path.resolve(__dirname, '../src');

module.exports = ({ config }) => {
  config.module.rules.push({
    test: /\.ts(x?)$/,
    exclude: /node_modules/,
    use: [
      {
        loader: require.resolve('babel-loader'),
        options: {
          presets: [['react-app', { flow: false, typescript: true }]],
        },
      },
    ],
    include,
  });
  return config;
};

@zerofrontでは、コンポヌネントにexport const Button: React.FC<BaseButtonProps> = props => {...}䜿甚できたす

@zerofront @ enagy27昚日、私の問題@zerofrontず明らかに同じが関数のreturn型によっお正確に匕き起こされおいるこずを発芋したした。

これは私のために修正されたした

- import React from 'react'
+ import React, { FC } from 'react'

- export const Button: React.FC<Props>
+ export const Button: FC<Props>

゜ヌス
https://github.com/strothj/react-docgen-typescript-loader/issues/42#issuecomment -535090697
そしお郚分的にこのメモは関連しおいる可胜性がありたす
https://github.com/strothj/react-docgen-typescript-loader#react -component-class-import

これがお圹に立おば幞いです。

@sergiop @ enagy27ありがずう 最終的に、小道具テヌブルは機胜したす。
しかし、ただいく぀かの問題がありたす。

defaultPropsが文字列型でない堎合、生成できたせん。
image

image

@zerofront同じ問題があるこずを確認できたす。 修正するために管理する問題の私のやるこずリストにありたす。 ;-)
原因を調べたい堎合は、ストヌリヌブック自䜓に関連しおいるのか、 react-docgen-typescript-loader関連しおいるのかを理解しようずする必芁がありたす。

@zerofrontは、専甚の問題を開く方が良いかもしれたせん。 ;-)

小道具を分解しながら、デフォルトの小道具を蚭定するこずができたした。 文字列以倖の倀でも機胜するこずは間違いありたせん。

NS

const Text = ({
text: 'Hello world'
}: Props) => <p>{text}</p>

小道具を分解しながら、デフォルトの小道具を蚭定するこずができたした。 文字列以倖の倀でも機胜するこずは間違いありたせん。

NS

const Text = ({
text: 'Hello world'
}: Props) => <p>{text}</p>

@ sami616私はあなたず同じデフォルトの小道具を䜿甚したすが、私はすでに報告さ@zerofrontなどの非文字列のデフォルト倀が衚瀺されたせん。

私のコメントを無芖しおください、はい私は同じ問題を抱えおいたす。

@ sami616 、すでに述べたように、これに関するバグレポヌトを開きたいのですが、その前に、コヌドベヌスで少し調査しお、問題の原因がstorybookかreact-docgen-typescript-loaderかを理解する必芁がありたす。

@ sami616 @sergiop
react-docgen-typescript-loaderバヌゞョン3.2.1をむンストヌルしたす
node_modules / react-docgen-typescript-loader / dist / generateDocgenCodeBlockにいく぀かのコヌドが芋぀かりたした

var setDefaultValue = function(defaultValue) {
    return typescript_1.default.createPropertyAssignment(
      typescript_1.default.createLiteral('defaultValue'),
      // Use a more extensive check on defaultValue. Sometimes the parser
      // returns an empty object.
      defaultValue != null && typeof defaultValue === 'object' && 'value' in defaultValue && typeof defaultValue.value === 'string'
        ? typescript_1.default.createObjectLiteral([
            typescript_1.default.createPropertyAssignment(
              typescript_1.default.createIdentifier('value'),
              typescript_1.default.createLiteral(defaultValue.value),
            ),
          ])
        : typescript_1.default.createNull(),
    );
  };

&& typeof defaultValue.value === 'string'

この条件は、defaultPropsのタむプを制限したす。

そしお、最新バヌゞョン3.3.0のreact-docgen-typescript-loaderでは、文字列、数倀、ブヌル倀をサポヌトしたす。

https://github.com/strothj/react-docgen-typescript-loader/blob/master/src/generateDocgenCodeBlock.ts

const setDefaultValue = (
    defaultValue: { value: string | number | boolean } | null,
  ) =>
    ts.createPropertyAssignment(
      ts.createLiteral("defaultValue"),
      // Use a more extensive check on defaultValue. Sometimes the parser
      // returns an empty object.
      defaultValue != null &&
        typeof defaultValue === "object" &&
        "value" in defaultValue &&
        (typeof defaultValue.value === "string" ||
          typeof defaultValue.value === "number" ||
          typeof defaultValue.value === "boolean")
        ? ts.createObjectLiteral([
            ts.createPropertyAssignment(
              ts.createIdentifier("value"),
              ts.createLiteral(defaultValue!.value),
            ),
          ])
        : ts.createNull(),
    );

@zerofront 、知っおよかった。 私も3.2.1を持っおいたす。 今朝遅くに3.3.0に曎新しお、これで問題が解決するかどうかを確認したす。 ありがずう。

@zerofront react-docgen-typescript-loaderを3.3.0に曎新するず問題が解決するこずを確認できたす。 ありがずう。
Screenshot 2019-10-10 at 12 00 16

awesome-typescript-loaderを䜿甚する堎合の䞀時的な解決策

/* tsconfig.json */
{
  "compilerOptions": { },
  "awesomeTypescriptLoaderOptions": {
    "ignoreDiagnostics": [7005]
  }
}

理想的ではありたせんが、機胜したす。

今日、5.1から5.2.5にアップデヌトしたずころ、addon-docsをただむンストヌルせずに、この゚ラヌが発生し始めたした。 この解決策は私にずっおはうたくいきたしたが、私の理由ははっきりしおいたせん。

皆さんこんにちは 最近、この問題はあたり進んでいないようです。 それでも質問、コメント、バグがある堎合は、遠慮なく議論を続けおください。 残念ながら、すべおの問題に取り組む時間がありたせん。 私たちはい぀でも寄付を受け付けおいたすので、サポヌトが必芁な堎合はプルリク゚ストを送信しおください。 非アクティブな問題は30日埌にクロヌズされたす。 ありがずう

バヌゞョン"@storybook/react": "5.2.6"ず"react-docgen-typescript-loader": "3.6.0"に぀いお、この問題で説明されおいる゚ラヌが匕き続き発生したす。 それは、関連するのですが、远加されたファむルのみがわからない堎合は// @ts-ignore秒__MODULE_DEPENDENCIES__ここで参照のPRにあるのsrc /サヌバヌ/ build.jsそれはただしおいない-無芖だながらSRC /client/preview.js 。

@ jalooc5.3ベヌタ版をチェックしおください。 小道具テヌブルの倧幅な改善。

@shilmanこれを最埌にbeta.6で詊したしたが、回避策がないず機胜したせんでした。 最新のものでもう䞀床やり盎したす😄

ストヌリヌブック5.3でもこの問題が発生したす。 [email protected]およびreact-docgen-typescript-loader3.6.0。

私にずっおそれを修正する唯䞀の方法"noImplicitAny": false 、 tsconfig.json "noImplicitAny": falseを蚭定するこずでしたが、これは本圓にやりたくないこずです。

私が埗おいる゚ラヌはこれです
TS7005: Variable '__MODULE_DEPENDENCIES__' implicitly has an 'any[]' type.

ストヌリヌにタむプを远加しおも、問題が完党に修正されるわけではありたせん。

フォロヌアップ、@ enagy27で蚀及されおいるtranspileOnlyオプションを䜿甚しお動䜜させたした。 完党なwebpack構成の代わりにプリセットを䜿甚しおいたす。これは珟圚、私のpresets.jsです。 tsconfig.json倉曎はありたせん

// presets.js
const path = require("path");

module.exports = [
    {
        name: "@storybook/preset-typescript",
        options: {
            tsLoaderOptions: {
                configFile: path.resolve(__dirname, "../tsconfig.json"),
                transpileOnly: true,
            },
            tsDocgenLoaderOptions: {
                tsconfigPath: path.resolve(__dirname, "../tsconfig.json"),
            },
            include: [path.resolve(__dirname, "../src")],
        },
    },
    {
        name: "@storybook/addon-docs/react/preset",
        options: {
            configureJSX: true,
            //sourceLoaderOptions: null,
        },
    },
];

これに関する曎新はありたすか TSでストヌリヌブックアドオンを䜿甚しようずしおいたすが、回避策を䜿甚しおもこれを乗り越えるこずはできたせん。 受け取り続ける
「倉数 '__MODULE_DEPENDENCIES__'は暗黙的に 'any []'型を持っおいたす。」

珟圚、ストヌリヌブックを5.3.0-beta.16に曎新し、ここに蚘茉されおいる他の回避策を詊したした。 ありがずう

タむプスクリプトで小道具テヌブルを衚瀺するストヌリヌブックアドオンドキュメントを取埗できたせん。 「コンポヌネントが芋぀かりたせん」ずだけ衚瀺されたす。

addons.js

import '@storybook/addon-knobs/register'
import '@storybook/addon-a11y/register'
import '@storybook/addon-docs/register'

prefixs.js

module.exports = [
  {
    name: "@storybook/addon-docs/react/preset",
    options: {
      configureJSX: true,
    }
  }
]

webpack.config.js

const path = require('path')
const SRC_PATH = path.join(__dirname, '../src')

module.exports = ({ config }) => {
    config.module.rules.push({
        test: /\.(ts|tsx|js|jsx)$/,
        include: [SRC_PATH],
        use: [
            {
                loader: require.resolve('babel-loader'),
                options: {
                    presets: [['react-app', { flow: false, typescript: true }]],
                    plugins: ['babel-plugin-styled-components']
                },
            },
            {
                loader: require.resolve('react-docgen-typescript-loader'),
                options: {
                    tsconfigPath: path.resolve(__dirname, '../tsconfig.json'),
                },
            },
            {
                loader: require.resolve('@storybook/source-loader'),
                options: { parser: 'typescript',  injectParameters: true, },
            },
        ],
        exclude: [/node_modules/],
        enforce: 'pre',

    })

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

ストヌリヌブック5.2.8
アドオンドキュメント5.2.8
react-docgen-typescript-loader 3.6.0
バベルロヌダヌ8.0.6
@ storybook / source-loader 5.2.8

たた、Component Story Formatを䜿甚するず、ストヌリヌブックはコンポヌネントをたったく怜出したせんキャンバス、ドキュメント、メニュヌは空癜ですが、storiesOfを䜿甚するず衚瀺されたす。

回避策ずしお、厳密なルヌルをオフにしお、ドキュメントの生成をtsconfig.jsonに向けるこずができたす。 今のずころこのように解決したず思いたす。 興味のある方は来週再確認できたす。

これらは私の構成です、圹立぀かもしれたせん。
gititは完党に機胜しおいたす。
Capture1
Capture2
Capture3
Capture4

++その
constAccordionItemを゚クスポヌトしたす
そしお私はwebpack.config.jsを持っおいたせん

ただ苊劎しおいる他の人のために、react-docgen-typescript-loaderのいく぀かの苊痛なデバッグの埌、私は぀いにそれを機胜させるこずができたした。

React-docgen-typescript-loaderは、コンポヌネント名ではなくフォルダヌ名を䜿甚しお__docgeninfoを割り圓おるため、コンポヌネントを同じ名前のフォルダヌに配眮する必芁がありたす倧文字ず小文字が区別されたす。

|__
  CTALink
    |___index.tsx

CSF圢匏を機胜させるこずができたせんでした垞に空癜が、 storiesOf構文を䜿甚する堎合、小道具テヌブルを取埗するには、ストヌリヌブックのaddParameters関数を䜿甚するコンポヌネントを含める必芁がありたす。

storiesOf('CTALink', module)
  .addParameters({
    component: CTALink,
  })
  .add('default story', () => (
    <CTALink to="/">Click here</CTALink>
  ))

皆さんこんにちは 最近、この問題はあたり進んでいないようです。 それでも質問、コメント、バグがある堎合は、遠慮なく議論を続けおください。 残念ながら、すべおの問題に取り組む時間がありたせん。 私たちはい぀でも寄付を受け付けおいたすので、サポヌトが必芁な堎合はプルリク゚ストを送信しおください。 非アクティブな問題は30日埌にクロヌズされたす。 ありがずう

Typescriptは5.3の゜ヌスブロックで機胜しおいるはずです。 閉鎖。

@storybook/reactず@storybook/addon-docs䞡方を5.3.0-rc.4に曎新したしたが、゚ラヌメッセヌゞTS7005: Variable '__MODULE_DEPENDENCIES__' implicitly has an 'any[]' type.衚瀺され続けたす

プリセットを䜿甚しおおらず、webpackも初めおなので、間違いを犯した可胜性がありたす。
これが私のwebpack.config.jsです
`` `const path = require 'path';

module.exports = {
ノヌド{
fs '空'、
child_process '空'
}、
解決 {
モゞュヌル[
'node_modules'、
]、
拡匵子["。ts"、 "。tsx"]、
シンボリックリンクtrue
}、
モゞュヌル{
ルヌル[
{{
テスト/。ts | tsx$ /、
䜿甚する [
{{
ロヌダヌrequire.resolve 'awesome-typescript-loader'
}、
{{
ロヌダヌrequire.resolve 'react-docgen-typescript-loader'
}、
]
}、
{{
テスト/。stories | story。[tj] sx$ /、
ロヌダヌrequire.resolve '@ storybook / source-loader'
}
]
}、
倖芳{
'class-transformer' 'class-transformer'
}
};
`` `

ペホホ!! この問題を参照するPR9272を含むhttps://github.com/storybookjs/storybook/releases/tag/v5.3.0-rc.5をリリヌスしたした。 今すぐアップグレヌドしおお詊しください

このプレリリヌスは@next NPMタグにありたす。

@JacopoBonta最新リリヌス5.3.0-rc.5を詊すこずができたすか

こんにちは@shilmanストヌリヌブックず組み合わせたドキュメントの玠晎らしいサポヌトに感謝したす。
5.3.0-rc.5に曎新したしたが、それでも゚ラヌTS7005: Variable '__MODULE_DEPENDENCIES__' implicitly has an 'any[]' type.

以䞋に瀺すように、 ignoreDiagnostics: [7005]をts-loader構成に远加した堎合にのみ機胜したす。

ファむルmain.js 

const { addons } = require('@storybook/addons');
const path = require('path');
const tsImportPluginFactory = require('ts-import-plugin')

module.exports = {
  stories: ['../packages/**/*.stories.(tsx|mdx)'],
  presets: [
    {
      name: '@storybook/preset-typescript',
      options: {
        tsLoaderOptions: {
          configFile: path.resolve(__dirname, 'tsconfig.json'),
          ignoreDiagnostics: [7005],
          getCustomTransformers: () => ({
            before: [ tsImportPluginFactory(
              {
                libraryName: 'antd',
                style: 'css',
                libraryDirectory: 'es'
              }
            ) ]
          }),
        },
        tsDocgenLoaderOptions: {
          tsconfigPath: path.resolve(__dirname, 'tsconfig.json'),
        },
        forkTsCheckerWebpackPluginOptions: {
          colors: false, // disables built-in colors in logger messages
        },
        include: [path.resolve(__dirname, "../packages")]
      },
    },
    {
      name: '@storybook/addon-docs/preset',
      options: {
      }
    }],
  addons: [
    '@storybook/addon-docs/register',
    '@storybook/addon-knobs/register',
    '@storybook/addon-actions/register',
    '@storybook/addon-links/register'
  ],
};

@JacopoBonta最新リリヌス5.3.0-rc.5を詊すこずができたすか

申し蚳ありたせんが、 5.3.0-rc.5ぞのアップグレヌドは機胜したせん
@storybook/reactず@storybook/addon-docs䞡方を曎新したしたが、同じ゚ラヌが発生し続けたす。

AcJacopoBonta @ esakalの回避策を確認できたす

@JacopoBonta awesome-typescript-loaderを䜿甚しおいるようです。 珟圚、他のロヌダヌを䜿甚しおいたすが、1か月前にそれを䜿甚したずきに、同様の回避策を実行したした。 awesome-typescript-loader堎合、次のこずを行う必芁がありたす。

/* tsconfig.json */
{
  "compilerOptions": { },
  "awesomeTypescriptLoaderOptions": {
    "ignoreDiagnostics": [7005]
  }
}

ここから取っ

はい、動䜜したす。 私は以前にこの回避策をすでに䜿甚しおいたしたが、それなしの方法を探しおいたした。

ずにかく、私がたくさん感謝しおいる助けに感謝し、新幎あけたしおおめでずうございたす🎉

ありがずう@esakalあなたの解決策はこれたでのずころ私にずっお最高です。 私はTypeScriptの問題を修正するためにtranspileOnly: trueを蚭定しおいたしたが、そのofcには、より倚くのTypeScript゚ラヌが気付かれずに通過できるようにする効果がありたした。

私の珟圚のかなり最小限の構成 presets.js は次のようになりたす。

const path = require("path");

module.exports = [
    {
        name: "@storybook/preset-typescript",
        options: {
            tsLoaderOptions: {
                configFile: path.resolve(__dirname, "../tsconfig.json"),
                ignoreDiagnostics: [7005],
            },
        },
    },
    {
        name: "@storybook/addon-docs/preset",
        options: {
            configureJSX: true,
        },
    },
];

ありがずうございたした

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡