Visual Studio Code devcontainer 中的 pnpm - 如何处理不同的容器操作系统版本?

问题描述 投票:0回答:1

在从事 Python 开发多年之后,我正在重新投入 JS/TS 进行 Shopify 应用程序开发。他们的入门模板是一个带有 Remix 的 TypeScript/JavaScript 应用程序,以 npm、yarn 或 pnpm 作为构建工具。我选择了 pnpm,因为我了解到它具有性能优势,因为下载过程中的并行性更高,并且有一个中央存储,它硬链接到而不是复制文件。

为了拥有可重复的开发环境,我正在使用 docker-compose 创建一个包含 3 个容器(应用程序、PostgreSQL、MariaDB)的 devcontainer。

当我在主机(Mac OS)上执行

pnpm i
时,所有内容都会安装到 /Users/$USER/Library/pnpm/store/v3 中。

对于 docker devcontainers,我的项目文件夹上方的文件夹作为 /workspaces 挂载到 docker 容器中(例如 /User/$USER/a/b/c/project,c 挂载为 /workspaces),而我的项目文件夹是 /工作空间/项目

当我现在在项目文件夹中

pnpm i
时,存储会在主机上的/workspaces/.pnpm-store中创建,该存储位于主机上/User/$USER/a/b/c/.pnpm-store

到目前为止,一切都很好。但我意识到,某些依赖项可能需要不同版本的 devcontainer 操作系统。不同版本的 devcontainer 操作系统会导致不同版本的已编译依赖项(我知道,因为至少有一个无法在 1-18-bookwork 中的安装上构建)。

我当前项目的 Dockerfile 是 FROM mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye

当我迁移其他应用程序时,我可能需要另一个 Debian 版本。这将导致包位于同一目录中。 pnpm 会检测到这个吗?还是我最终会痛苦?

据我所知,没有办法影响商店路径。因此,分离 .npm 存储的唯一方法是按操作系统和版本在不同的文件夹中分离项目,这完全违背了 pnpm 的整个共享存储概念。

类似这样的:

  • ~/文档/项目/VSC-devcontainers/debian/bookworm
  • ~/Docs/Projects/VSC-devcontainers/debian/bullseye
  • ~/文档/项目/VSC-devcontainers/ubuntu/22.0.4
  • ...
visual-studio-code pnpm vscode-devcontainer devcontainer
1个回答
0
投票

不久前,但后来我发现:确实,pnpm 不会检测 npm 包构建的操作系统的差异。你将会在痛苦中结束。

© www.soinside.com 2019 - 2024. All rights reserved.