打字稿中的故事书配置

Posted

技术标签:

【中文标题】打字稿中的故事书配置【英文标题】:Storybook config in typescript 【发布时间】:2020-06-19 23:35:45 【问题描述】:

我想写故事书装饰器。有什么办法可以在打字稿中写和preview.js

我已经成功地在 TS 中编写故事本身,现在想在 TS 中编写故事书配置。

【问题讨论】:

【参考方案1】:

我终于成功了。

应添加配置目录以包含 typescript preset 和 tsconfig.json 的选项 将模块分辨率设置为“节点”,因为某些原因它被设置为配置文件夹的“经典”

另外,main.js 应该保留 JS 文件,因为只有在解析 main.js 配置后,storybook 才能使用 TS 预设。

【讨论】:

请澄清“应添加配置目录以包含 typescript preset 和 tsconfig.json 的选项”。你到底做了什么改变?在哪里改变? 更新:这对我有用,包括最新的故事书@6.3 中的main.ts @jorisw 他的意思是tsconfig.json里面有一个包含选项【参考方案2】:

从故事书 6.3 开始,您可以在 typescript 中编写 main.tspreview.ts。 请参阅此处的示例https://github.com/storybookjs/storybook/tree/next/examples/cra-ts-kitchen-sink/.storybook

但是,这里需要注意的是,您不能在典型的 tsconfig.json 中使用 "target": "ESNext",因为节点本身还不支持 ES 模块。

如果您想要 ESNext,例如在 rollup 旁边使用故事书,则需要一种解决方法。我的方法是通过环境变量TS_NODE_PROJECT 将故事书配置为使用另一个tsconfig.json。例如

.storybook/tsconfig.json


  "extends": "..",
  "compilerOptions": 
    "module": "commonjs",
    "target": "ES2017"
  

然后运行cross-env TS_NODE_PROJECT=.storybook/tsconfig.json start-storybook

之所以起作用,是因为 Storybook 使用 webpack,而 webpack 又使用 tsconfig-paths 来解析 tsconfig.json 的路径。

【讨论】:

在 tsconfig-paths 和 TS_NODE_PROJECT 上不错。

以上是关于打字稿中的故事书配置的主要内容,如果未能解决你的问题,请参考以下文章

在打字稿中使用猫鼬填充查询

如何在打字稿中正确使用 lodash-es?

在打字稿中以自引用方式键入对象

过滤掉打字稿中接口的不需要的对象属性

打字稿中的 Javascript

什么是打字稿中的打字