简介:本文详细介绍如何将开源库提交至全球知名CDN服务cdnjs,包括准备工作、提交流程、注意事项及常见问题解答,助力开发者高效完成提交。
cdnjs是全球最受欢迎的免费开源CDN服务之一,为超过12%的网站提供JavaScript、CSS等静态资源加速服务。对于开源项目维护者而言,将库提交至cdnjs不仅能显著提升资源加载速度,还能扩大项目影响力。本文将基于2022年最新规范,系统讲解提交流程与关键注意事项。
cdnjs要求所有提交的库必须采用OSI认证的开源协议(如MIT、Apache 2.0、GPL等)。需特别注意:
cdnjs要求提交的库必须具备:
// 推荐package.json结构示例{"name": "your-library","version": "1.2.3","main": "dist/your-library.min.js","files": ["dist/", "src/"],"publishConfig": {"access": "public"}}
建议通过GitHub Actions实现:
# .github/workflows/publish.yml示例name: Publish to CDNon:release:types: [published]jobs:publish:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-node@v2with: { node-version: '16' }- run: npm ci && npm run build- uses: cdnjs/cdnjs-actions@v1with:auto-update: truetoken: ${{ secrets.CDNJS_TOKEN }}
cdnjs要求项目必须包含:
/├── src/ # 源码目录├── dist/ # 构建产物(必需)│ ├── your-lib.js│ └── your-lib.min.js└── package.json
{"scripts": {"build": "webpack --mode production","prepare": "npm run build"}}
lodash |https://github.com/... |4.17.21 |dist/lodash.min.js |在项目根目录创建.cdnjs.json文件:
{"autoupdate": {"source": "npm","target": "lodash","fileMap": [{"basePath": "dist","files": ["*.js"]}]}}
cdnjs会进行三项核心检测:
必须包含:
若自动更新失败,可手动触发:
当出现哈希值不匹配错误时:
# 生成标准哈希值sha256sum dist/your-lib.min.js > dist/SHA256SUMS# 提交时附带该文件
对于WebAssembly等特殊格式,需在package.json中声明:
{"wasm": {"files": ["dist/*.wasm"],"browser": "chrome >= 80"}}
建议配置Cloudflare Workers监控CDN状态:
addEventListener('fetch', event => {event.respondWith(handleRequest(event.request))})async function handleRequest(request) {const res = await fetch('https://cdnjs.cloudflare.com/ajax/libs/your-lib/1.2.3/your-lib.min.js')return new Response(res.body, {headers: { 'Cache-Control': 'max-age=86400' }})}
在HTML中建议这样引用:
<script src="https://cdnjs.cloudflare.com/ajax/libs/your-lib/1.2.3/your-lib.min.js"><script>if (!window.YourLib) {// 加载本地备份const script = document.createElement('script')script.src = '/js/your-lib.backup.js'document.head.appendChild(script)}</script>
通过Google Analytics追踪CDN使用情况:
// 在库初始化时添加if (window.gtag) {gtag('event', 'cdn_load', {'library': 'your-lib','version': '1.2.3'})}
将库提交至cdnjs是提升开源项目影响力的有效途径。通过遵循本文介绍的规范流程,开发者可以高效完成提交并持续享受CDN加速带来的性能提升。建议定期检查cdnjs的更新日志以获取最新要求。