问题标签 [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/configs
Yarn 正在尝试创建文件夹,命令- 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
?