【发布时间】:2017-11-04 19:53:39
【问题描述】:
我一直致力于创建一个小型 React 组件库,以用于其他几个项目。我在内部发布包(使用私有 GitHub 存储库),然后包含在另一个项目中。但是,当我从包的子目录导入时,由于路径不匹配,我无法这样做。
使用该包的项目都使用 webpack 来捆绑/转译代码,因为我尽量避免在组件库中进行任何构建。
目录结构
- package.json
- src/
- index.js
- Button/
- index.js
- Button.jsx
- ButtonGroup.jsx
- Header/
- index.js
- Header.jsx (default export)
package.json
...
"main": "./src/index.js",
"scripts": "",
...
src/Button/index.js
import Button from './Button';
import ButtonGroup from './ButtonGroup';
export default Button;
export { Button, ButtonGroup};
src/index.js
如果只从子目录导入,这个文件真的有必要吗?
import Button from './Button';
import ButtonGroup from './Button/ButtonGroup';
import Header from './Header';
export { Button, ButtonGroup, Header };
其他项目
// This project is responsible for building/transpiling after importing
import { Button, ButtonGroup } from 'components-library/Button';
示例
Material-UI 是一个 React 组件库,通过以下方式使用:import { RadioButtonGroup } from 'material-ui/RadioButton。我试图弄清楚这对他们是如何工作的,但还没有成功。
类似问题
-
How would I import a module within an npm package subfolder with webpack?
- 这几乎是我需要的正确方法,除了那里使用的导入路径涉及
src/目录,我试图避免(应该是component-library/item,而不是component-library/src/item(虽然目前确实有效) ))
- 这几乎是我需要的正确方法,除了那里使用的导入路径涉及
-
Publishing Flat NPM Packages
- 这正是我想要的,只是我希望包中没有“构建”阶段(依赖于导入位置来构建/转换)
问题
- 我可以在导入路径中以某种方式跳过
src/目录吗? - 我可以跳过包中的任何类型的构建阶段(这样开发人员就不必在提交之前构建)吗?
- 类似于 material-ui 的包如何处理这个问题?
【问题讨论】:
-
您是否发现
Material-UI是如何实现import npm-package/subfolder/Component的方式来导入src/subfolder/Component组件的? -
我最终从这个转向其他选择,抱歉。
-
您能分享一下您的经验吗?我目前正在寻找类似的东西,但找不到有用的资源。现在我正在打包一个我正在编写的没有
src目录(github.com/tonix-tuft/react-js-utl)的库。我在项目的根目录中使用 ES6 源代码创建子文件夹并将这些目录发布到 NPM,但我想这不是最佳的(例如 ES6 导出在 Node 中的服务器端不起作用)......不过,我可以使用react-js-utl/subfolder语法导入所需的文件。顺便说一句,祝你新年快乐!谢谢。 -
不幸的是我不记得我最后做了什么,因为它已经快一年半了:(。我确实希望有这方面的资源,但请记住我不能很快就弄清楚了,不得不继续前进。
-
你可以这个我的anwser stackoverflow.com/a/61829655/8079868
标签: javascript node.js npm webpack package.json