简介:本文详细介绍2022年如何将开源库提交至cdnjs的完整流程,涵盖前置条件、提交步骤、版本控制及常见问题处理,帮助开发者高效完成库的CDN集成。
cdnjs是全球最流行的免费开源CDN服务之一,截至2022年已托管超过4000个JavaScript/CSS库,日均请求量超200亿次。将库提交至cdnjs的核心价值在于:
2022年新规要求所有提交必须包含:
my-library/
├── dist/ # 编译后文件(必选)
│ ├── my-lib.min.js
│ └── my-lib.css
├── src/ # 源码目录(可选)
├── package.json # 包含版本信息
└── README.md # 使用说明
.min后缀的压缩版本库名-版本.扩展名格式(如jquery-3.6.0.min.js)v1.2.3)npm version patch等命令管理版本cdnjs要求所有库必须包含以下文件之一:
LICENSE文件(完整许可证文本)package.json中的license字段常见有效许可证:MIT、BSD、Apache 2.0、ISC。GPL类许可证需单独审核。
访问cdnjs/cdnjs GitHub仓库,通过New Pull Request按钮提交。需包含:
library.json配置文件(核心配置)
{
"name": "my-library",
"filename": "my-lib.min.js",
"version": "1.2.3",
"description": "A lightweight JavaScript library",
"homepage": "https://github.com/user/my-lib",
"keywords": ["utility", "frontend"],
"autoupdate": {
"source": "git",
"target": "git://github.com/user/my-lib.git",
"fileMap": [{
"basePath": "dist",
"files": ["*.js", "*.css"]
}]
},
"authors": [{
"name": "John Doe",
"email": "john@example.com"
}]
}
关键字段说明:
autoupdate:配置自动更新规则(git/npm/svn)fileMap:指定需要分发的文件路径npm类型库可简化配置为:
"autoupdate": {
"source": "npm",
"target": "my-library",
"fileMap": [{
"basePath": "dist",
"files": ["**/*"]
}]
}
library.json中的version字段autoupdate.target的版本标签
"autoupdate": {
"source": "git",
"target": "git://github.com/user/repo.git",
"fileMap": [...],
"strategy": "tags" // 或"releases"
}
tags模式:监控Git标签变更releases模式:监控GitHub Releases发现错误版本时:
git tag -d v1.2.4)git push origin :refs/tags/v1.2.4)my-lib.esm.js)library.json的autoupdate配置有效性filename字段区分不同版本(如jquery-3.6.0.min.js和jquery-2.2.4.min.js)*.d.ts声明文件--dark变量支持| 方案 | 成本 | 维护难度 | 全球覆盖 | 
|---|---|---|---|
| 自有CDN | 高 | 高 | 依赖云厂商 | 
| jsDelivr | 免费 | 低 | 与cdnjs相当 | 
| UNPKG | 免费 | 中 | 侧重NPM生态 | 
| cdnjs | 免费 | 低 | 最全面 | 
推荐策略:优先提交至cdnjs,同时通过<link>标签多CDN冗余加载。
通过遵循本指南,开发者可在2022年高效完成库的cdnjs提交,享受全球CDN加速带来的性能提升与传播红利。实际提交时建议先fork仓库进行本地测试,确保配置文件100%合规后再提交正式PR。