从npm包的子文件夹导入
从npm包的子文件夹导入
我一直在创建一个React组件的小型库,供其他多个项目使用。我在内部发布这个包(使用私有的GitHub仓库),然后在另一个项目中引用它。然而,当我尝试从包的子目录导入时,由于路径不匹配,我无法这样做。
使用该包的项目都使用webpack来打包/转译代码,因为我尽量避免在组件库中进行任何构建。
目录结构
- package.json
- src/
- index.js
- Button/
- index.js
- Button.jsx
- ButtonGroup.jsx
- Header/
- index.js
- Header.jsx(默认导出)
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 };
其他项目
// 在导入后,该项目负责构建/转译
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
这正是我想要的,只是我希望在包中不需要"构建"阶段(依赖于导入位置来构建/转译)
问题
1. 是否可以在导入路径中跳过src/目录?
2. 是否可以在包中跳过任何构建阶段(开发人员在提交之前不需要构建)?
3. 类似于material-ui的包是如何处理这个问题的?