如何安装没有符号链接的纱线工作区包?
Posted
技术标签:
【中文标题】如何安装没有符号链接的纱线工作区包?【英文标题】:How to install yarn workspace packages without symlink? 【发布时间】:2019-10-28 09:09:07 【问题描述】:我有一个看起来像这样的纱线工作区项目:
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
复制 yarn 工作区包而不是创建符号链接?
或者,是否有其他方法可以删除所有未使用的代码(例如客户端代码),这样我的 docker 映像就不会臃肿?
【问题讨论】:
【参考方案1】:在工作空间中运行 yarn install 在任何包或根目录中执行相同的操作。它为每个包安装模块并符号链接等。
如果您只想为服务器构建 docker 映像,您应该只将该包复制到容器中并将其作为独立包安装。
如果服务器依赖于共享库,您可以将其发布到 npm,以便它也可以获取它。
【讨论】:
一个不只是发布到 npm 如果另一个包需要它...我正在尝试使用本地包并复制它而不是符号链接它。【参考方案2】:您可以使用yarn-workspace-isolator 提取具有本地依赖项的包,以避免将它们发布到 npm(如果您不想这样做)。
isolate-workspace -w my-package -o ~/dist/my-package
现在,正如医生所说:
你可以简单地在
~/dist/my-package
中运行yarn install
,yarn 就会 安装所有依赖项,就好像您根本没有使用工作区一样 无需发布任何工作区依赖项。
【讨论】:
我马上去看看以上是关于如何安装没有符号链接的纱线工作区包?的主要内容,如果未能解决你的问题,请参考以下文章
如何创建指向 mysql 的符号链接? (Mac, XAMPP)