
initializbuildpacks/npm-installNPM Install CNB 是一个基于 Cloud Native Buildpacks (CNB) 规范的构建组件(Buildpack),旨在通过集成 Node Engine CNB 提供的 npm 工具链,自动化管理 Node.js 应用的依赖项安装流程。其核心功能是在应用构建阶段解析并安装 package.json 中声明的依赖,确保构建环境中依赖项的正确配置,为后续应用打包和运行提供基础。
package.json 或 package-lock.json/yarn.lock(若存在),自动执行 npm install 或 npm ci 命令安装依赖。node_modules),减少重复构建时的网络请求和安装时间。package.json 的各类 Node.js 应用(如 Express、React、Vue 等)。package.json 的 Node.js 应用(支持 npm 作为包管理器)。pack CLI、Tekton、GitHub Actions 中的 CNB 插件等)。NPM Install CNB 作为 CNB 构建包,需配合 CNB 构建器(Builder)使用,典型流程如下:
package.json(必要),可选包含 package-lock.json 或 npm-shrinkwrap.json 以锁定依赖版本。paketobuildpacks/builder:base)。pack CLI 或 CNB 兼容工具触发构建,NPM Install CNB 会自动执行依赖安装。pack CLI)使用 pack 命令行工具构建 Node.js 应用镜像:
bash# 安装 pack CLI(参考 [***] # 构建应用镜像,指定包含 NPM Install CNB 的 builder pack build my-node-app \ --builder paketobuildpacks/builder:base \ # 基础 builder,包含 Node Engine 和 NPM Install CNB --path ./my-node-project \ # 项目根目录(包含 package.json) --env NODE_ENV=production # 可选:设置环境变量
构建过程中,NPM Install CNB 会自动执行:
package.json;npm install(或 npm ci,若存在 lock 文件);node_modules)缓存至构建层,供后续构建复用。NPM Install CNB 支持通过环境变量或项目配置文件(buildpack.yml/project.toml)自定义行为,常用配置如下:
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
NPM_REGISTRY | 指定 npm 依赖仓库地址(如私有仓库) | [***] |
NPM_CONFIG_PRODUCTION | 是否仅安装 dependencies(忽略 devDependencies) | 由 NODE_ENV 决定,production 时为 true |
NPM_INSTALL_FLAGS | 传递给 npm install 的额外参数(如 --force、--no-audit) | 空 |
NODE_ENV | 影响 npm 行为(如 production 模式下不安装 devDependencies) | development |
NPM_CONFIG_CACHE | 自定义 npm 缓存目录(用于依赖缓存优化) | /layers/npm-cache |
示例:使用私有 npm 仓库构建
bashpack build my-node-app \ --builder paketobuildpacks/builder:base \ --path ./my-node-project \ --env NPM_REGISTRY=[***] \ --env NPM_INSTALL_FLAGS="--no-audit --legacy-peer-deps"
通过项目根目录的 buildpack.yml 或 project.toml 配置(优先级高于环境变量):
buildpack.yml 示例:
yamlnodejs: npm: registry: "[***]" install_flags: "--no-audit --legacy-peer-deps" config: production: true # 等效于 NPM_CONFIG_PRODUCTION=true
project.toml 示例(符合 CNB 项目元数据规范):
toml[[build.env]] name = "NPM_REGISTRY" value = "[***]" [[build.env]] name = "NPM_INSTALL_FLAGS" value = "--force"
NPM Install CNB 会将 node_modules 缓存至 CNB 构建层(/layers/npm-install/node_modules),后续构建时若 package.json 和 lock 文件未变更,将直接复用缓存以加速构建。若需强制刷新依赖(忽略缓存),可通过以下方式:
bashpack build my-node-app \ --builder paketobuildpacks/builder:base \ --path ./my-node-project \ --env BP_CLEAR_CACHE=true # 清理所有构建缓存(含依赖缓存)
package-lock.json 或 npm-shrinkwrap.json,此时 NPM Install CNB 会优先使用 npm ci 而非 npm install,减少依赖版本波动。engines 字段在 package.json 中声明 Node.js 版本范围(如 "engines": {"node": ">=18.0.0"})。node_modules 权限,可通过 BP_NODE_USER 环境变量指定运行用户(如 --env BP_NODE_USER=root)。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务