清理用户yarn缓存会影响docker镜像吗?

Dan*_*Dan 6 node.js docker dockerfile yarnpkg

在构建 docker 镜像时,按照以下步骤操作

  • 安装依赖项(RUN yarn install)
  • 生成构建(运行 ng build --prod)

如果我在 docker 文件中使用以下命令从 usr 位置清除 yarn 缓存,它会在我运行 docker 映像时产生影响吗?

运行 rm -rf /usr/local/share/.cache/yarn/*

由于 docker 图像大小为 1.2 GB,所以我清理了上面接近 450+ MB 的位置。

我正在使用不支持多阶段构建的较低版本的 docker(出于特定原因)。

另外,上面的命令是不是等价于RUN yarn clean cache?

FROM node:10-alpine

WORKDIR /app

COPY . /app

RUN apk --no-cache add yarn \
    && yarn install \
    && ng build --prod \
    && rm -rf /var/cache/apk/* \
    && rm -rf /usr/local/share/.cache/yarn/*

EXPOSE 3000

CMD ["npm", "run", "start"]
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 10

纱线版本 1

您可以安全地删除缓存文件,它不会影响您的应用程序。甚至还有一个专门的命令

$ yarn cache clean
Run Code Online (Sandbox Code Playgroud)

纱线版本 2

然而,使用即插即用,清除缓存很可能会破坏您的应用程序,因为依赖项不再放置在node_modules. 文档是这样说的:

在此安装模式下(现在是从 Yarn v2 开始的默认安装模式),Yarn 生成单个 .pnp.js 文件,而不是通常的 node_modules。.pnp.js 文件不包含已安装包的源代码,而是包含一个将包名称和版本链接到磁盘上位置的映射,以及另一个将包名称和版本链接到其依赖项集的映射。得益于这个高效的系统,Yarn 可以准确地告诉 Node 在哪里查找所需的文件 - 无论是谁请求它们!

磁盘上的位置是缓存。

您可以通过将其放入文件中来恢复旧的行为.yarnrc.yml

nodeLinker: node-modules
Run Code Online (Sandbox Code Playgroud)

在此处阅读有关即插即用的更多信息