yarnpkg - 如何安装没有符号链接的纱线工作区包?
问题描述
我有一个看起来像这样的纱线工作区项目:
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。
我复制packages
并package.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
......所以我无法删除该文件夹。
如何
yarn install
制作纱线工作区包的副本而不是创建符号链接?或者,有没有另一种方法来删除所有未使用的代码(例如客户端代码),这样我的 docker 图像就不会臃肿?
解决方案
在工作空间中运行 yarn install 在任何包或根目录中执行相同的操作。它为每个包安装模块并对它们进行符号链接等。
如果您只想为服务器构建 docker 映像,您应该只将该包复制到容器中并将其作为独立包安装。
如果服务器依赖于共享库,您可以将其发布到 npm,以便它也可以获取它。
推荐阅读
- python - Y 轴值在双条形图中未正确显示
- windows - 如何在没有 IIS 的 ASP.NET CORE 3.1 中获取当前 Windows 用户名
- ios - React-native iOS 不显示图像(pod 问题)
- flutter - 如何检测 SliverAppBar 被固定
- python - Openpyxl - 在 iter_rows'ing 时读取相交列
- vba - 如何从 VBA 调用 ScCreateConversationIndex?
- arrays - C中的 int* p 和 (int*) p 有什么区别
- javascript - 使用 javascript 删除 li 元素的 ul 类
- c# - 如何在 Xamarin Android 中的 UserInterface 线程上实现 Timer Elapsed Event
- java - 从字符串中删除连续的重复字符