packages/rc-components/rc-console-menu/RoutableMenu.js (3 lines of code) (raw):
/**
* 我们没有从index.js export CompatibleMenu 和 RoutableMenu。
* 因为这两个组件依赖于peerDependency: dva。
* 如果我们在index.js中引入这两个组件,那么**即使用户没有import这两个组件**,
* webpack在构建依赖树的时候也必须解析到用户安装的dva及其递归依赖,
* 否则会报错。
* 换句话说:即使用户不使用 CompatibleMenu 和 RoutableMenu,他也必须自己安装dva。
*
* 为了避免上述情况,我们不在index.js export CompatibleMenu 和 RoutableMenu,
* 而是在根目录下用两个文件分别export它们。
* 如果用户想使用CompatibleMenu,他要这么做:
* 1. yarn add dva 因为CompatibleMenu依赖dva
* 2. `import CompatibleMenu from '@alicloud/console-components-console-menu/CompatibleMenu'`
* RoutableMenu同理。
* 注:为什么不直接让用户:
* `import CompatibleMenu from '@alicloud/console-components-console-menu/es/CompatibleMenu'`
* 因为我们不希望用户依赖于我们的内部目录结构`es`,未来我们可能把构建结果放在`esnext`。
*
* 如果用户不使用这两个特殊组件,那么他可以直接
* `import ConsoleMenu from '@alicloud/console-components-console-menu'`,不用安装dva。
*/
import RoutableMenu from './es/RoutableMenu';
export default RoutableMenu;
export * from './es/RoutableMenu';