
获得徽章 21
- 记一个有意思的 npm 依赖的问题,包管理器使用的 pnpm。
`sass-embedded` 在凌晨发布了 `v1.86.0` 版本,我在大约 1 个小时后升级了依赖,项目使用 `npmmirror.com` 作为镜像源。但升级依赖后却报错缺少 `sass-embedded-darwin-xxx` 依赖无法编译 sass 代码。对比 `v1.85.1` 的安装变更发现 `sass-embedded` 的 `optionalDependencies` 未写入 `pnpm-lock.yaml` 文件内。
又经过一番研究后发现 `npmmirror.com` 当前仅同步了 `sass-embedded` 至 `v1.86.0`,它的所有 `optionalDependencies` 还停留在 `v1.85.1`。应该是 pnpm 下载不到这些可选依赖,所以也全部未写入 `pnpm-lock.yaml` 文件。
这里感觉的问题:
1. npmmirror.com 在同步依赖的时候,应该尽量保证这种存在互相依赖关系的包同步更新。
2. sass-embedded 的 optionalDependencies 实际是要根据客户机器的架构必须依赖一个的,并非全部可选。
3. pnpm 在安装类似 sass-embedded 这样的包,下载不到对应包的时候,是否应该直接报错。展开评论点赞 - 评论点赞
- 写了个 npm 包,加入到 npm scripts 或者 CI 中自动触发 npmmirror(暂只支持 npmmirror) 对指定包的同步。适合比如发包到 NPM 但是有项目要通过 npmmirror 镜像使用的。
仓库地址:github.com
评论点赞