为什么jsDelivr无法获取我发布的最新版npm包?
jsDelivr npm包同步异常解决方案
常见原因及修复方案
- 检查发布文件完整性
首先确认你发布到npm的包中包含完整的编译产物:你可以本地执行npm pack命令,解压生成的tgz压缩包,查看是否包含编译后的dist目录。如果缺少产物,说明你可能将dist目录写入了.npmignore,或者没有在package.json中通过files字段声明要发布的文件,调整配置后重新发布版本即可。 - 显式指定CDN入口
你可以在package.json中新增jsdelivr字段,直接指定供CDN使用的umd产物路径,示例配置如下:
显式配置该字段后,jsDelivr会优先读取对应路径的文件,可大幅提升同步成功率。"jsdelivr": "./dist/umd/index.js" - 手动触发缓存刷新
如果包已经成功发布到npm超过1小时仍未同步,你可以在jsDelivr的包详情页找到缓存刷新按钮,手动触发同步,通常触发后10分钟内即可完成版本更新。 - 调整发布钩子配置(可选优化)
你当前使用的prepublish钩子在npm 4及以上版本中,会在执行npm install时也触发,建议替换为prepublishOnly钩子,该钩子仅会在npm publish执行前触发,避免不必要的编译操作,调整后的scripts配置如下:"scripts": { "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"", "lint": "tslint -p tsconfig.json", "test": "jest --config jestconfig.json", "compile": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && tsc -p tsconfig-umd.json", "prepublishOnly": "npm run compile" }
如果以上操作都完成后仍无法同步,你可以检查npm对应版本的元信息是否正常,确认没有设置访问权限限制。
内容的提问来源于stack exchange,提问作者cbutler
相关产品推荐
相关产品推荐

