问题标签 [yarn-workspaces]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
304 浏览

node.js - 有条件地指向 package.json 中的 main 字段

我在 Lerna 和 Yarn Workspaces 下有一个 Monorepo。该 repo 包含发布到 npm 并在 monorepo 之外和 monorepo 内使用的包。在 monorepo 中开发时,我们希望所有此类包的main字段package.json都指向src目录,而当在 monorepo 之外使用包时,我们希望消费者使用dist文件夹中的转译代码。

我希望这在包的所有用途中保持一致,我当前的解决方案是让main字段指向dist文件夹。然后对于 monorepo 中的每个工具,即jesttscwebpackparcel我不得不想出一个不同的工具特定的解决方案来为src目录而不是dist目录别名。但我不喜欢我必须为这些工具中的每一个都做这项工作。它似乎无法扩展。

有没有人想出一个较低级别的解决方案,一个模块根据环境解析到不同的文件夹?

谢谢你。

0 投票
0 回答
447 浏览

node.js - 如何使用 webpack 和无服务器框架将 bcrypt 捆绑在纱线工作区 monorepo 中?

我正在尝试打包一个 monorepo 应用程序以使用无服务器进行部署。monorepo 使用 yarn 工作空间和 lerna。为了创建用于部署的包,我们使用 webpack。项目结构如下:

这是monorepo中的项目结构:

common
- shared_project_1
-- package.json
- shared_project_2
-- package.json
服务
- service_1
-- package.json
--
serverless.yml -- webpack.config.js
- service_2
-- package.json
--
serverless.yml -- webpack .config.js
package.json
lerna.json

commom/shared_project_1/package.json:

服务/service_1/package.json:

服务/service_1/serverless.yml:

包.json:

lerna.json:

当无服务器到达“无服务器:与 Webpack 捆绑...”时,我得到的错误是:

/Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js 中的警告 6:15-36 关键依赖项:依赖项的请求是一个表达式 @ /Users/me/Projects/monorepo/common/shared_project_1/src/表/users.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/connection.js @ ./src/dashboard-snapshots.js

/Users//Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/pre-binding.js 中的警告 20:22-48 关键依赖:依赖的请求是一个表达式 @ /Users/me /Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/node-pre-gyp.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js @ /Users/me/Projects /monorepo/common/shared_project_1/src/tables/users.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/connection.js @ ./src/dashboard-snapshots.js

/Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/versioning.js 中的警告 17:20-67 关键依赖项:依赖项的请求是一个表达式 @/Users/我/项目/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/pre-binding.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/node -pre-gyp.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js @ /Users/me/Projects/monorepo/common/shared_project_1/src/tables/users.js @ /Users/me/项目/monorepo/common/shared_project_1/src/connection.js @ ./src/dashboard-snapshots.js

/Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/compile.js 中的警告:找不到模块:错误:无法解析“/Users/me/”中的“npm”项目/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util' @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/compile.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp/lib 同步 ^./.*$ @ /Users/me/Projects/monorepo/node_modules/bcrypt/node_modules/node-pre-gyp /lib/node-pre-gyp.js @ /Users/me/Projects/monorepo/node_modules/bcrypt/bcrypt.js @ /Users/me/Projects/monorepo/coinfo 访问https://yarnpkg.com/en/docs /cli/run获取有关此命令的文档。

我已尝试根据其他问题的建议将 bcrypt 添加到 nohoist 工作区配置中,但这只会更改错误消息中的路径。我已经全局安装了 node-pre-gyp 和 node-gyp;没什么区别。显然,我不明白这些部分是如何组合在一起的。我需要进行哪些更改才能使工作区正确捆绑 bcrypt 依赖项以部署到 AWS 中?

0 投票
2 回答
4134 浏览

rollupjs - lerna run --parallel 不适用于汇总手表

背景:

我有一个带有两个包的纱线工作区的 lerna monorepo。我使用汇总作为捆绑器。

包/模块1/package.json:

包/模块2/package.json:

预期行为:

  1. lerna run build将为每个包运行build脚本。
  2. lerna run watch将以watch监视模式运行每个包的脚本。

当前行为:

  1. lerna run build按预期工作。该build脚本对这两个包都正确运行。
  2. lerna run watch就挂在那里:

我试过了lerna run --parallel watch这只运行一次。它在汇总完成后退出。换句话说,它似乎从来没有在看。

0 投票
2 回答
2289 浏览

typescript - 使用 yarn 工作空间和 typescript 的项目引用来引用另一个包子目录

我使用纱线工作区并具有以下软件包:

  • 包/x-cli
  • 包/x-core

我希望能够从 x-core 子目录导入符号,就像你做的那样import map from 'lodash/map',例如:

但我收到以下错误:

但是,如果它在库的根目录中导出,则此方法有效:

我在 Github 上做了一个小项目,以准确展示我的设置,基于 lerna-yarn-workspaces-example:https ://github.com/julienfouilhe/example-subdirectory-workspace-typescript-import

有没有办法做到这一点,我找不到任何有效的方法。我对模块分辨率不太了解,所以我无法准确定位问题!

0 投票
0 回答
1031 浏览

reactjs - 纱线工作区共享反应组件 babel 错误

Xena - 纱线工作区

  • components : 共享代码所在的位置
  • admin2-client : CRA react-app 想要使用组件

单回购设置:

共享的 react 组件不会通过 babel 进行转译,因此消费应用程序会给出 babel 错误。

我已将其.babelrc放入我的共享组件文件夹(nmds-component)。也"source":true给共享组件package.json

根包.json

admin2-client package.json

我的猜测是react-scripts start不会在里面转译代码node_modules,而是作为符号链接nmds-components存在于根目录中。node_modules

0 投票
3 回答
2946 浏览

node.js - 带有 Yarn 工作区的 Firebase 函数

我们开始采用使用 yarn 工作区的 monorepo 设置,我们希望在其中包含我们的 firebase 功能。回购结构类似于:

所以,这个设置我有两个问题:

  1. 函数的依赖项与函数的入口文件不在同一个文件夹中
  2. 这些功能取决于 repo 中的其他包,例如corecommom,因此 yarn 符号链接从 node_modules 到 repo 中的包。

无论如何我可以处理这个吗?

0 投票
1 回答
3764 浏览

yarnpkg - AWS CodeBuild 不适用于 Yarn 工作区

我在我的存储库中使用 Yarn Workspaces,并且还使用 AWS CodeBuild 来构建我的包。构建开始时,CodeBuild 需要 60 秒来安装所有包,我想避免这段时间缓存node_modules文件夹。

当我添加:

到我的buildspec文件并启用LOCAL_CUSTOM_CACHE,我收到此错误:

错误发生意外错误:“EEXIST:文件已存在,mkdir'/codebuild/output/src637134264/src/git-codecommit.us-east-2.amazonaws.com/v1/repos/MY_REPOSITORY/node_modules/@packages/configs '”。

有没有办法消除配置 AWS CodeBuild 或 Yarn 的错误?

我的构建规范文件:

谢谢!

更新1:

/codebuild/output/src637134264/src/git-codecommit.us-east-2.amazonaws.com/v1/repos/MY_REPOSITORY/node_modules/@packages/configsYarn 正在尝试创建文件夹,命令- yarn处于install阶段。此文件夹是我的存储库包之一,名为@packages/config. 当我yarn在我的计算机上运行时,Yarn 会创建链接我的包的文件夹,如此所述。node_modules我的结构在我的计算机上的示例:

0 投票
1 回答
2271 浏览

webpack - 在 yarn 工作区中配置 webpack

我正在将一些存储库迁移到使用带有 Lerna 的纱线工作区的单存储库。包看起来大致是这样的:

app与 webpack 捆绑在一起。它包括components-1components-2作为依赖项,以及 React 15.3.2。

components-1包括 React 15.6.1 的对等依赖项。所以它有 React 15.6.1 是一个开发依赖。这是从该包中运行 react-styleguidist 和测试所必需的,并且主要是作为一个单独的 repo 存在的工件,预迁移。

看起来,因为有两个版本的 React,webpack 将捆绑两者,因为两者都在不同的位置成功解析。React 15.3.2 安装在 repo 的 root-levelnode_modules中,而 React 15.6.1 安装在components-1/node_modules.

正如人们所预料的那样,ReactDOM 也会发生同样的情况。

我的解决方案是在应用程序的 webpack 配置中定义react别名react-dom

但这对我来说似乎有点 hacky,因为它只能在这个 yarn 工作区设置中工作。

我想知道是否有更好的方法来做到这一点,无论是在应用程序的 webpack 配置中,还是在某种纱线工作区配置中。

0 投票
2 回答
386 浏览

semantic-ui - Use Semantic UI with Lerna and yarn workspaces

The Semantic UI (and Fomantic UI) installer (famously?) doesn't support yarn because of its interactive postinstall script. Even with "autoInstall": true in semantic.json, yarn will still break on the first install.

This makes it hard to keep a themed Semantic UI installation in its own package in a Lerna monorepo, when using workspaces. Even if --ignore-scripts is added to Lerna's package.json scripts, it will still run a standard yarn install by itself every now and then when making changes, and become blocked by Semantic UI.

Is there a way around this?

0 投票
1 回答
795 浏览

yarnpkg - Storybook 正在从 yarn/lerna monorepo 的包的 node_modules 文件夹中加载故事

我在 lerna/yarn 工作区 monorepo 中使用故事书。我今天注意到故事书正在尝试从packages/**/node_modules/@scope/foo/stories/foo.stories.js我尝试注销 config.js 中的 require.context 键但未登录到控制台中加载故事。有没有现成的方法来告诉故事书不加载符号链接的本地node_modules?我可能错误地配置了故事书吗?这是我的配置:

示例错误:

这会导致故事书构建中断。

我如何告诉故事书不要从内部加载故事node_modules