以前修改过一个unpkg,可以支持本地私服部署,今天有一位网友在使用淘宝registry 的时候发现有问题,会有重定向的问题
造成不能使用
原因分析
尽管我们配置的是 registry.npmmirror.com 但是对于内容的下载npmmirror 会使用另外一个域名cdn.npmmirror.com 对于npm 的tar.gz
进行下载造成有问题(核心是node 的https 模块不支持重定向请求)
解决方法
目前解决方法很简单,使用了一个对于http 请求支持重定向处理的包follow-redirects,直接替换默认的https 模块就可以了
- 参考代码
import https from 'https';
修改为
import {https} from 'follow-redirects';
docker 版本参考使用
- docker-compose 文件
version: "3"
services:
unpkg:
image: dalongrong/unpkg:http-env-v2
environment:
- NPM_REGISTRY_URL=https://registry.npmjs.org
ports:
- "8080:8080"
说明
目前docker镜像也已经push 到dockerhub 了,可以直接使用dalongrong/unpkg:http-env-v2
,同时unpkg 原始代码也有一些调整,直接基于了
unpkg 最新的进行了修改,对于docker 镜像同时修改了基础镜像为node:18.19.1-alpine3.19,node 低版本有一个很大的安全问题
参考资料
https://github.com/rongfengliang/unpkg
https://www.npmjs.com/package/follow-redirects
https://hub.docker.com/repository/docker/dalongrong/unpkg/general
https://github.com/rongfengliang/unpkg/blob/master/modules/utils/npm.js#L2
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.11.1