- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用例是 Lerna monorepos 中的分支构建和部署。
问题是 Lerna monorepos 要么在 NPM 中提升依赖项,要么使用 yarn 工作空间来收集工作空间/monorepo 的 node_modules 文件夹中的所有依赖项。这意味着由于 docker build contexts 的工作方式,在子文件夹中构建 Dockerfile 时将无法访问它们。
我想这里需要的是一种“较低”(与提升相反)功能,用于在运行 docker build 之前将包依赖项拉入 Docker/package.json 项目的 node_modules 中。
问题是,有没有人有更好的主意,或者知道已经存在的方法来做到这一点?
最佳答案
对于我自己的项目,解决方案是使用docker BuildKit首先构建所有工作区,然后为项目工作区构建一个 docker 镜像,以重用以前构建的文件。
详细地说,您可以在 docker 文件中复制带有 yarn 锁的顶部 package.json,然后挑选所需工作区的 package.json。
然后运行 yarn install 和 yarn build 让一切正常。
这是我的项目:
# base image
FROM @myscope/base:latest as base
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY ["package.json","yarn.lock", "./"]
COPY ./packages/server/package.json ./packages/server/
COPY ./packages/shared/package.json ./packages/shared/
COPY ./packages/app/package.json ./packages/app/
RUN yarn install --frozen-lockfile --non-interactive --production=false --ignore-scripts
COPY . /app
RUN yarn build
FROM nodejs:14.15 as serverapp
WORKDIR /app
COPY ["package.json","yarn.lock", "./"]
COPY ./packages/server/package.json ./packages/server/
COPY ./packages/shared/package.json ./packages/shared/
RUN yarn install --frozen-lockfile --non-interactive --production=true --ignore-scripts
# copy artifact build from the 'build environment'
COPY --from=base /app/packages/shared/dist /app/packages/shared/dist
COPY ["./packages/server/", "./packages/server/"]
WORKDIR /app/packages/server
VOLUME ["/app/packages/server/logs", "/app/packages/server/uploads"]
EXPOSE $PORT
CMD ["yarn", "start"]
shared
是一个私有(private)工作空间,它是
server
的依赖项。工作区。
关于javascript - 如何在不发布的情况下在 lerna monorepo 中构建 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59320343/
要旨 我有一个 monorepo,我正在使用 yarn workspaces和 lerna来管理它。直到现在我都没有问题。我需要知道自上次发布以来所有更改的包。 问题 所以我跑 lerna chang
我正在尝试使用 Lerna 设置我的 monorepo。该计划是通过提取应该是他们自己的包的代码块来重构现有项目。我跑了lerna init ,我当前的设置如下所示: project/ packa
我有一个 Lerna 项目,直到最近才使用 lerna bootstrap --hoist。这很有效,但我发现许多子文件夹中的 devDependencies 大部分是相同的。升级到 Lerna v3
我有三个包: A , 取决于 C B , 取决于 C C 使用 lerna run build 时, C在 A 之前构建和 B (好的!) 但是当我开始监视任务时lerna run watch , C
我们正在迁移我们的 monorepo 以使用 Lerna . Lerna 支持 NPM 和 Yarn,此外还允许使用 Yarn 工作区进行配置。我不清楚带有 Yarn 工作区的 Lerna 是否比带有
我正在迁移到 pnpm 以管理来自 lerna 的 monorepo。但是,在 CI 中,有一个遗留命令使用 lerna 的 --since 选项。 lerna run lint --since or
我在 lerna 包下有 2 个项目。其中一个是一个包,另一个是一个cra网站。当我在每个包下执行“yarn start”时,我可以看到构建文件夹和分别在开发服务器中加载的网站: 包 1 >> "st
在我的 monorepo 中,我有 3 个包 package1 , package2 , package3 ,每个包都包含一个名为 build 的 npm 脚本. 但是,这些包没有链接在一起。即没有r
在现代软件开发中,创建 定制化的命令行工具(CLI) 已成为满足公司业务需求的关键一环。这类工具可以辅助执行诸如代码检查、项目初始化等任务。为了提高开发效率并简化维护过程,我们将功能模块化,并通过多个
我的结构如下: 包.json lerna.json 包 myproj-util 包.json myproj-模式 package.json -- 在 myproj-util 上有开发依赖 这两个项目都
我有一个由 Lerna 驱动的 monorepo,其中包含发布到 NPM 的各种包。其中有各种辅助函数,它们位于 repo 的根目录中,并由几个包共享。 我遇到的问题是,当每个包都是用 Babel 构
对于 yarn workspaces,我有一个常见(或不那么 coomon)的场景并没有在网上找到适合我的指南。 yarn 工作区看起来像这样: - monorepo - packages
我的根目录中有一个 webpack.config.js (在包含 packages*.json 文件的目录之外),当我启动 lerna 时运行 build 然后出现此错误: **ERROR OUTPU
我正在使用 lerna 来管理 React 组件库。我的一些组件既有来自 npm 注册表的外部依赖项,也有内部依赖项,存储库中的同级包。 我正在尝试使用 lerna add 命令将内部依赖项添加到另一
使用 lerna 和本地依赖项的正确方法是什么? 我已经在 mono 存储库中配置了两个模块,以将 lerna 与本地依赖项一起使用。我预料到了 $ lerna bootstrap $ lerna r
我有一个 lerna 存储库,其中包含以通常结构组织的多个包: package.json /packages - alpha package.json - bravo pack
假设两个项目(例如 my-app 和 my-ui)使用 webpack 别名将“components”解析为“./src/components”。我使用 Lerna 在本地“链接”这个项目并简化开发,
当使用 lerna publish 发布包时,如果检测到循环依赖,则会输出警告。 有没有办法让 lerna 检查循环依赖而不发布包? 最佳答案 lerna bootstrap 也会输出循环依赖。 关于
我有一个 lerna 脚本( lerna dev ),它使用 --parallel 启动几个包的开发服务器选项(如果我不使用该选项,则只会启动第一个服务,而不会启动其他服务)。这些服务器在不同端口上以
我正在使用 Lerna monorepo。我经常看到一个包从另一个包的深处导入,例如: import { SomeType } from "@schema/folder/folder/file.ts"
我是一名优秀的程序员,十分优秀!