首页 > 解决方案 > 如何安装没有符号链接的纱线工作区包?

问题描述

我有一个看起来像这样的纱线工作区项目:

node_modules
packages
  shared
    test.js
    package.json
  client
    test.js
    package.json
  server
    test.js
    package.json
package.json
server.Dockerfile

正如你所看到的,我有一个server.Dockerfile,它构建了一个服务器的镜像,我可以将它推送到不同的托管服务提供商,比如 Heroku 或 AWS。

我复制packagespackage.json进入这个容器:

COPY packages packages
COPY package.json .

然后我只安装server包的依赖项:

RUN cd packages/server && yarn install

现在所有依赖项都在node_modules文件夹中,接下来我想删除packages文件夹以从 docker 映像中删除任何不必要的代码(例如客户端代码):

RUN rm -rf packages

这样做的问题是node_modules文件夹内的所有纱线工作区包只是文件夹的符号链接packages......所以我无法删除该文件夹。

标签: yarnpkgyarn-workspaces

解决方案


在工作空间中运行 yarn install 在任何包或根目录中执行相同的操作。它为每个包安装模块并对它们进行符号链接等。

如果您只想为服务器构建 docker 映像,您应该只将该包复制到容器中并将其作为独立包安装。

如果服务器依赖于共享库,您可以将其发布到 npm,以便它也可以获取它。


推荐阅读