强制纱线将某些模块安装到给定的工作区,而不是将它们移动到monorepo的共享节点模块?
Posted
技术标签:
【中文标题】强制纱线将某些模块安装到给定的工作区,而不是将它们移动到monorepo的共享节点模块?【英文标题】:Force yarn to install certain modules to given workspace, rather than moving them to shared node_modules of monorepo? 【发布时间】:2020-05-03 00:43:52 【问题描述】:我有一个 monorepo(通过 yarn workspaces)。其中一个工作区是通过 Create React App 创建的 React 应用程序(我认为这很重要,因为 CRA 将 Webpack/Babel 放在自己的 node_modules
中)。另一个工作区是一个纯 javascript 包,带有自己的一组 Webpack + Babel 工具。
我的问题是,当我从纯 JavaScript 工作区启动构建时,我得到了这些:
但是,当我将工作区分离到一个独立目录(使用复制/粘贴)并从那里构建时,它构建得非常好。
所以我的猜测是 monorepo 本身有问题。我还注意到指定的工作区在本地node_modules
中缺少@babel
、babel-runtime
和regenerator-runtime
,所以我从monorepo 的主node_modules
文件夹中复制/粘贴了它们,然后整个事情就构建好了。现在这显然是 yarn monorepo 和 Webpack + Babel junction 架构的一些缺陷。
是否可以强制yarn
将特定模块安装到本地node_modules
,而不是通过将它们移动到monorepo 根目录中的共享node_modules
来“帮助我”?
【问题讨论】:
【参考方案1】:您可以使用 nohoist。这将指示应在本地为软件包安装哪些模块。
【讨论】:
不确定为什么它被否决,似乎是一个合法的答案。也许他们希望通过示例或其他方式获得更多扩展的响应。但是,我要 +1。以上是关于强制纱线将某些模块安装到给定的工作区,而不是将它们移动到monorepo的共享节点模块?的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 JBoss 部署使用特定版本的依赖项而不是已安装的模块?