目前国内有很多 NPM 的 CDN,可以支持相关包文件的高速访问下载,如:
- BootCDN: www.bootcdn.cn
- 七牛云: www.staticfile.org
- 360: cdn.baomitu.com
- 字节跳动: cdn.bytedance.com
但这些 CDN 并不全,很多 NPM 上的包在这些 CDN 上是找不到的。原因是,它们从 CDNJS 上有选择的同步数据,所以当你需要的一些 NPM 包没有在 CDNJS 上面,你就享受不了上面这些国内 CDN 了。
如果要用库全的 CDN,推荐下面三个:
- Zstatic:s4.zstatic.net
- 渺软:cdn.onmicrosoft.cn
- 南科大:mirrors.sustech.edu.cn/cdnjs
其中 Zstatic 用到了镜像回源,也就是说只要访问一次,文件就会被存储到国内的服务器上,再也不用担心缓存过期了,所以建议优先用这个。
如果您使用 cdnjs.com 只需要替换 cdnjs.cloudflare.com 为 s4.zstatic.net 即可,如
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
替换成
<script src="https://s4.zstatic.net/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
如果您使用 unpkg.com 只需要替换 unpkg.com 为 s4.zstatic.net/npm 即可,如
<script src="https://unpkg.com/react@16.7.0/umd/react.production.min.js"></script>
替换成
<script src="https://s4.zstatic.net/npm/react@16.7.0/umd/react.production.min.js"></script>
注意:CDNJS 只需要替换域名,UNPKG 需要替换域名和路径,不要少写那个/npm
批量替换的代码:
find . -type f -exec sed -i 's#https://unpkg.com#https://s4.zstatic.net/npm#g' {} +
find . -type f -exec sed -i 's#https://cdnjs.cloudflare.com#https://s4.zstatic.net#g