monorepo的单一依赖管理

时间:2017-11-29 17:58:42

标签: npm lerna monorepo

我正在使用lerna处理 monorepo 。我有一个主程序包,我的应用程序(app),这是一个react应用程序和一些其他程序包,通常是react组件。

App.js

import React, { Component } from 'react';
import CollectionBrowser from '@elmc/app-collection-browser';
import './App.css';

export default class App extends Component {
  render() {
    return (
      <div className="App">
        <header>...</header>
        <CollectionBrowser />
      </div>
    );
  }
}

我在这里导入导出CollectionBrowser组件的react

CollectionBrowser.js

import React, { Component } from 'react';

export default class CollectionBrowser extends Component {
    render() {
        return <div>foobar</div>;
    }
}

现在有两件事让我烦恼:

  1. 我正在导入并捆绑react两次,一次在我的主应用程序中,另一次在我的CollectionBrowser中独立于此。是否有一种很好的方法可以只将react捆绑一次?
  2. 我有2个(或任意数量)构建脚本,每个我创建的包一个。是不是有一个很好的方法来拥有一个捆绑器和一个迁移过程?

1 个答案:

答案 0 :(得分:0)

您可能会对使用它的每个程序包作出 peer 依赖性作出反应。这样,基于react的任何一个项目都可以选择其版本,并且只能添加所需的软件包。

或者第二种方法是在你的库中安装一个ui-core软件包这个ui-core可以作为一个依赖项做出反应,所有其他使用react的软件包都可能需要它。

关于2,我们基于每个包构建和发布所有内容。