菜单

包管理

相关源文件

本文档涵盖了 Gumroad 代码库中 Node.js 和 Ruby 环境的依赖管理配置。它解释了版本锁定策略、npm 配置设置,以及如何在不同开发环境中强制执行包版本。

有关包含这些包管理器的本地开发环境设置,请参阅本地开发环境设置。有关可能作为包管理的开发工具,请参阅代码质量工具

概述

Gumroad 项目使用双语言栈,包含 Node.js 和 Ruby 依赖项。包管理通过版本锁定文件和配置进行处理,以确保开发、CI/CD 和生产部署环境的一致性。

版本管理策略

包管理器版本控制

来源: .node-version1 .ruby-version1 .npmrc1-2

项目使用明确的版本锁定文件,以确保所有开发人员和 CI/CD 系统都使用相同的运行时版本。这可以防止特定于环境的错误,并确保所有部署的行为一致。

Node.js 包管理

版本规范

Node.js 版本锁定为 20.17.0,具体请参阅 .node-version1。此 LTS 版本提供了稳定性,同时支持前端构建管道所需的现代 JavaScript 功能。

npm 配置

位于 .npmrc1-2 的 npm 配置包含两个关键设置

设置目的
resolution-modehighest在依赖解析期间选择最高兼容版本
peers-suffix-max-length0禁用包名中的对等依赖后缀生成

包解析流程

来源: .npmrc1-2 .node-version1

resolution-mode=highest 设置确保当多个版本能够满足依赖范围时,npm 会选择最高兼容版本。这可以在保持兼容性的同时,获取最新的错误修复和安全补丁。

Ruby 包管理

Ruby 版本控制

Ruby 版本 3.4.3.ruby-version1 中指定。此文件由 rbenv 等 Ruby 版本管理器自动读取,以确保所有开发环境中 Ruby 运行时版本的一致性。

版本管理器集成

来源: .ruby-version1

Ruby 版本文件确保本地开发、CI/CD 流水线和 Docker 构建都使用相同的 Ruby 运行时版本,从而防止特定于版本的兼容性问题。

环境一致性

跨平台版本强制执行

两个版本文件都作为不同环境中运行时版本的权威来源

  • 本地开发:版本管理器读取这些文件以切换到正确的版本
  • CI/CD 流水线:构建脚本引用这些文件以进行环境设置
  • Docker 构建:容器镜像使用这些版本作为运行时基础镜像
  • 生产部署:Nomad 编排使用这些版本进行容器运行时

包管理器配置影响

npm 配置影响整个开发生命周期中的包解析行为

  • 开发:确保开发人员机器上的依赖版本一致
  • 资源编译:影响生产资源中打包的包版本
  • CI/CD:影响测试环境的包选择和构建可复现性

来源

来源: .node-version1 .ruby-version1 .npmrc1-2