将 TS 类型与 preserveModules: true 和 monorepo 内部一起使用时,将 TS 类型放在 dist 中

Co-locate TS typings in dist when using rollup with preserveModules: true and inside of a monorepo

提问人:Jeff 提问时间:11/10/2023 最后编辑:Jeff 更新时间:11/15/2023 访问量:23

问:

我有以下用例:一个使用 turborepo、typescript、多个 turborepo 包的 mono-repo,以及每个使用带有设置的 rollup 的包。preserveModules: true

我正在使用,因为我希望能够独立导入每个组件、文件等。preserveModules: true

但是,如果我从 with 中导入一个类型,请获取一个 distpackageA/components/Button.tsxpackageB/types/BaseTypes.tspackageA

- dist
  - components
    - Button.js
  - packageA
    - components
      - Button.d.ts
  - packageB
    - BaseTypes.d.ts

我希望我最终能得到这样的东西:

- dist
  - components
    - Button.js
    - Button.d.ts
    - BaseTypes.d.ts

但这似乎是不可能的。这是一个有问题的 github 代码空间。您需要运行节点 18.0.0,从根目录运行并检查包的 dist。在那里,你会看到组件正在从 ;但是,这些类型被移动到一个文件夹中,但我希望它们在yarn build:uiui-other@ui-other/components/Buttonimport { ButtonSize } from '@ui/Button';dist/ui-other/componentsdist/components

TypeScript Rollup RollupJS

评论

0赞 KeitelDOG 11/13/2023
我已经为配置而苦苦挣扎了 2 天,将其从简单模块更改为单独的模块。我能够自动将它们放在适当的目录中,我还不知道如何管理所有这些目录,但是如果导入类型,它应该正确添加它们。如果没有,则必须添加许多对象,以便为每个对象创建单独的结果。就像你可以添加一个 for 、 一个 for 和一个 for ,然后把它们都放进去。index.jsindex.d.tsButton.tsx{ input: '...', output: ..., plugins: []dist/componentsdist/packageA/componentsdist/packageBdist/components
0赞 KeitelDOG 11/13/2023
可能有处理多个块和分组的高级技术。但到目前为止,多个输入/输出过程更受控制,主要原因在于 rollup 配置可能与 the 不是 rollup 输出目录的子路径冲突。这导致我在每个汇总输出中放置不同的内容。我要在 1 小时内查看 Repos,看看我是否可以处理它。我会让你知道的。tsconfig.jsdeclarationDirdeclarationDir
0赞 KeitelDOG 11/14/2023
抱歉,找不到代码空间,也许它或存储库是私有的,或者您删除了它。
0赞 Jeff 11/15/2023
对不起,这是指向公共代码空间存储库的链接:github.com/JeffWeim/turborepo-starter
0赞 KeitelDOG 11/16/2023
我找到了罪魁祸首,为什么它选择而不是像包装一样。这是因为.在 , in , add a 的代码中,你会看到仅在配置中添加的差异,因为你添加了键,在最后,而包根本没有它。这就是导致它将声明放在 dir 中的原因dist/ui-otherdistuirollup-plugin-typescript2node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.jsLine 30325console.log('config', parsedConfig);config.options.pathsBasePathui-otherpaths/ui-other/.uiui-other

答: 暂无答案