我一直在努力创建一个React组件的小型库,以便在其他几个项目中使用.我在内部发布包(使用私有GitHub存储库),然后包含在另一个项目中.但是,当我从包的子目录导入时,由于路径不匹配,我无法这样做.
使用该软件包的项目都利用webpack捆绑/转换代码,因为我试图避免在组件库中进行任何构建(如果可能).
- package.json
- src/
- index.js
- Button/
- index.js
- Button.jsx
- ButtonGroup.jsx
- Header/
- index.js
- Header.jsx (default export)
Run Code Online (Sandbox Code Playgroud)
的package.json
...
"main": "./src/index.js",
"scripts": "",
...
Run Code Online (Sandbox Code Playgroud)
SRC /按钮/ index.js
import Button from './Button';
import ButtonGroup from './ButtonGroup';
export default Button;
export { Button, ButtonGroup};
Run Code Online (Sandbox Code Playgroud)
SRC/index.js
如果只从子目录导入,这个文件真的是必要的吗?
import Button from './Button';
import ButtonGroup from './Button/ButtonGroup';
import Header from './Header';
export { Button, ButtonGroup, Header };
Run Code Online (Sandbox Code Playgroud)
其他项目
// This project is responsible for building/transpiling …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试为 React 构建一个 UI 库,但遇到了一些麻烦。目前我正在使用打字稿和汇总,我能够捆绑单个组件index.js,并且能够导入这些组件,但它正在导入整个库。
现在:
文件结构:
src
--components
-----button
-------button.tsx
-------button.types.ts
-----input
-------input.tsx
-------input.types.ts
-----index.ts
rollup.js
Run Code Online (Sandbox Code Playgroud)
我的汇总目标index.ts将所有内容导出为这样:
src
--components
-----button
-------button.tsx
-------button.types.ts
-----input
-------input.tsx
-------input.types.ts
-----index.ts
rollup.js
Run Code Online (Sandbox Code Playgroud)
我可以像这样导入反应项目:
export { default as Button} from './button/button'
export { default as Input } from './input/input'
Run Code Online (Sandbox Code Playgroud)
我想要做什么 我希望每个组件都单独捆绑,并且像这样导入
import { Button, Input } from 'my-library'
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
阅读文档后,似乎这就是preserveModule: true我正在寻找的内容,但后来我尝试按照上面的方式导入,但它开始抱怨没有找到任何东西。
我当前的 rollup.js 如下所示:
import { Input } from 'my-library/input'
import { Button } from 'my-library/button'
Run Code Online (Sandbox Code Playgroud) 我们正在使用 tsdx 构建共享代码项目,我们只有一个疑问,担心我们无法得到答案。如何导出使用 TSDX 发布的包的子文件夹。
让我们用我之前的例子来回答这个问题。在我们项目的入口点,我们将这两个组件导出到根目录中。
因此,当您想使用它们时,我们必须从库的根目录导入组件(使用示例):
import { Thing, SimpleStyledH1Application } from "tsdx-styled-components"
Run Code Online (Sandbox Code Playgroud)
我们想知道如何配置我们的入口点,以便我们可以从子文件夹中导入我们的组件,例如
import { Thing } from "tsdx-styled-components/things"
import { SimpleStyledH1Application } from "tsdx-styled-components/styled"
import { CoreComponent } from "tsdx-styled-components"
Run Code Online (Sandbox Code Playgroud)
关于如何将子文件夹添加到我们创建的库中的指南/注释,这样(不仅对我来说而且对使用 TSDX 的任何人来说)如何创建带有子文件夹的库都很容易。
示例项目:
https://github.com/robertovg/tsdx-styled-components/ https://github.com/robertovg/next-ts-styled-components-tsdx-host
这个问题最初作为tsdx上的问题发布,但几个月后没有答案,我想将其移至此处,看看是否有人解决了该问题。
javascript ×3
module ×1
node.js ×1
npm ×1
npm-publish ×1
package.json ×1
reactjs ×1
rollup ×1
rollupjs ×1
tsdx ×1
typescript ×1
webpack ×1