为开发环境配置Lerna:使用共享软件包

时间:2018-12-05 16:31:53

标签: javascript reactjs webpack lerna monorepo

我用Lerna构建了monorepo。它具有以下结构:

packages
  - create-react-app-example
  - utils

create-react-app-example就像create-react-app产生的一样。即它使用webpack来转译ES6 / ES7代码,并在文件更改等方面具有热模块替换功能;

utils软件包只有1个文件,具有某些实用程序功能。并且此函数从create-react-app-example包内部使用;它不使用Webpack,Babel或任何其他工具;

所以,一切都很简单。

但是我很难配置舒适的开发环境。

所以我想要的东西很少:

  • 能够使用utils软件包内的es6 / es7代码(此软件包的代码应以某种方式进行编译);
  • utils软件包中发生更改时,
  • 自动对主模块进行热更新;

我唯一想到的是调整webpack.config.js中的create-react-app-example

  • 更改babel加载程序的设置,因此它不会排除node_modules/utils文件夹并将其进行转换;
  • 并更改webpack watch的参数,以便它将检测两个软件包中的更改

但是我不喜欢上面的解决方案,它对我来说看起来很脏。

可能还有一些更优雅的解决方案?

或者我也应该将webpack.config添加到utils包中,并以某种方式将其用作库?如果我没记错的话,Webpack具有这种功能。

谢谢

1 个答案:

答案 0 :(得分:0)

  

为了能够在utils包中使用es6 / es7代码(此代码   软件包应该以某种方式进行翻译);

如果您真的想将utils保留为单独的软件包,只需将babel配置为与CRA应用分开移植即可。您可以使用babel cli进行此操作,下面是如何执行此操作的示例:https://github.com/babel/example-node-server

  

当utils发生变化时,自动对主模块进行热更新   包装;

您配置Webpack手表声音的想法正确。文件here

您可能最终会得到2块手表:babel转译utils软件包,以及用于构建和捆绑CRA应用程序的webpack。