问题标签 [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.
node.js - 有条件地指向 package.json 中的 main 字段
我在 Lerna 和 Yarn Workspaces 下有一个 Monorepo。该 repo 包含发布到 npm 并在 monorepo 之外和 monorepo 内使用的包。在 monorepo 中开发时,我们希望所有此类包的main字段package.json都指向src目录,而当在 monorepo 之外使用包时,我们希望消费者使用dist文件夹中的转译代码。
我希望这在包的所有用途中保持一致,我当前的解决方案是让main字段指向dist文件夹。然后对于 monorepo 中的每个工具,即jest、tsc、webpack,parcel我不得不想出一个不同的工具特定的解决方案来为src目录而不是dist目录别名。但我不喜欢我必须为这些工具中的每一个都做这项工作。它似乎无法扩展。
有没有人想出一个较低级别的解决方案,一个模块根据环境解析到不同的文件夹?
谢谢你。
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 中?
rollupjs - lerna run --parallel 不适用于汇总手表
背景:
我有一个带有两个包的纱线工作区的 lerna monorepo。我使用汇总作为捆绑器。
包/模块1/package.json:
包/模块2/package.json:
预期行为:
lerna run build将为每个包运行build脚本。lerna run watch将以watch监视模式运行每个包的脚本。
当前行为:
lerna run build按预期工作。该build脚本对这两个包都正确运行。lerna run watch就挂在那里:
我试过了lerna run --parallel watch,这只运行一次。它在汇总完成后退出。换句话说,它似乎从来没有在看。
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
有没有办法做到这一点,我找不到任何有效的方法。我对模块分辨率不太了解,所以我无法准确定位问题!
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
node.js - 带有 Yarn 工作区的 Firebase 函数
我们开始采用使用 yarn 工作区的 monorepo 设置,我们希望在其中包含我们的 firebase 功能。回购结构类似于:
所以,这个设置我有两个问题:
- 函数的依赖项与函数的入口文件不在同一个文件夹中
- 这些功能取决于 repo 中的其他包,例如
core和commom,因此 yarn 符号链接从 node_modules 到 repo 中的包。
无论如何我可以处理这个吗?
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我的结构在我的计算机上的示例:
webpack - 在 yarn 工作区中配置 webpack
我正在将一些存储库迁移到使用带有 Lerna 的纱线工作区的单存储库。包看起来大致是这样的:
app与 webpack 捆绑在一起。它包括components-1和components-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 配置中,还是在某种纱线工作区配置中。
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?
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?