尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

icss-mcp-server 发布到 npm 前如何执行发布前检查?

icss-mcp-server 发布到 npm 前如何执行发布前检查? icss-mcp-server 发布到 npm 前如何执行发布前检查【免费下载链接】iCSS不止于 CSS项目地址: https://gitcode.com/GitHub_Trending/ic/iCSS如果你维护的是 iCSS 仓库下的 MCP 目录即 npm 包icss-mcp-server当前版本 1.1.1在把新版本推上 npm 之前需要先确认几件事必要的文件与脚本齐全、package.json的名称/版本/bin/依赖/脚本命令正确、CLI 入口可执行、数据库内容已构建、README 与 LICENSE 符合要求。仓库里已经把这套检查固化为一个脚本 publish-check.js并在 MCP/package.json 中用prepublishOnly钩子串接了数据构建与服务测试。这篇文章说明如何完整走一遍发布前检查流程以及如何判断检查结果是否达到可以npm publish的状态。运行前提来自 MCP/package.json 的engines与peerDependenciesNode.js18.0.0npm8.0.0在iCSS/MCP目录下执行命令先执行npm install装好依赖数据拉取脚本依赖axios、sqlite3等dependencies中列出的包。第一步运行静态发布检查 publish-check.js在MCP目录执行node scripts/publish-check.js该脚本只读取本地文件做检查不发起网络请求也不会发布任何东西因此可以反复运行。它依次做以下检查对应 publish-check.js 中的实现必要文件package.json、server.js、setup.js、bin/icss-mcp.js、bin/install.js、scripts/fetch-issues.js、scripts/fetch-inspiration.js、test-server.js、test-inspiration.js、README.md、README.en.md、LICENSE是否都存在package.json 内容name必须是icss-mcp-serverversion必须是1.1.1bin中定义了icss-mcp和icss-mcp-install两个命令files数组非空且定义了build:inspiration、build:all、test:inspiration、test:all四个脚本命令CLI 脚本bin/icss-mcp.js与bin/install.js是否具有可执行权限stats.mode检查、是否以#!/usr/bin/env nodeshebang 开头、内容中是否包含v1.1.1版本号依赖modelcontextprotocol/sdk、sqlite3、fuse.js、axios、marked、dotenv、cheerio是否都在dependencies中数据库data/icss.db是否存在且大于 1KB。文件不存在时只打印⚠️ Database file not found (will be created on first run)的警告不计为失败CSS-Inspiration 集成scripts/fetch-inspiration.js与test-inspiration.js是否存在并包含css_inspiration/CSS-Inspiration相关引用README中英文 README 的标题是否为# iCSS MCP Server、是否提及 CSS-Inspiration、是否包含安装命令npm install -g icss-mcp-server、内容长度是否超过 1000 字符LICENSE是否为 MIT 许可证server.js内容是否包含版本1.1.1以及search_css_demos、get_css_demo两个新工具函数。如何判断第一步是否通过脚本末尾根据累计结果二选一输出并以对应的进程退出码结束全部通过时打印 All checks passed! Ready to publish v1.1.1.随后附上 v1.1.1 的新增功能清单以及发布指引npm publish发布后运行npm install -g icss-mcp-server和icss-mcp-install退出码为 0任一项失败时打印❌ Some checks failed. Please fix the issues before publishing.退出码为 1。每条检查项在终端中以✅通过或❌失败标记失败的行会直接给出原因例如Version should be 1.1.1, got: x.y.z、Missing script: xxx按提示修掉对应问题即可。注意脚本里的版本断言是硬编码的1.1.1如果你把package.json升到了新版本需要同步更新脚本中的版本字符串、server.js与两个bin脚本中的版本号否则版本相关检查会失败。第二步执行 prepublishOnly 钩子构建数据 服务测试MCP/package.json中定义了prepublishOnly: npm run build:all npm test也就是说npm publish之前会自动先执行npm run build:all再执行npm test。如果你想单独把这两步跑一遍、不触发发布可以在MCP目录执行npm run build:all npm testnpm run build:all等价于依次执行npm run build和npm run build:inspiration分别运行 fetch-issues.js 和 fetch-inspiration.js通过 GitHub API 拉取 iCSS 文章数据和 CSS-Inspiration 演示数据并写入本地data/icss.db即第一步中检查的数据库文件。拉取脚本会读取环境变量GITHUB_TOKEN脚本源码中若未设置会打印⚠️ No GITHUB_TOKEN found in environment variables. API rate limits will be restricted.的警告fetch-issues.js还明确处理了限流场景——GitHub API 返回 403 时打印❌ GitHub API rate limit exceeded. Please set GITHUB_TOKEN environment variable.并退出。因此建议在执行npm run build:all前先导出自己的 token避免拉取失败export GITHUB_TOKEN你的 GitHub token其中你的 GitHub token需要替换为你自行在 GitHub 上生成的 token。没有 token 时脚本也能运行只是受 API 速率限制影响。npm test运行test-server.js对 MCP 服务做功能测试另外 MCP/README.md 还列出了npm run test:allnpm test npm run test:inspiration可一并覆盖test-inspiration.js。第三步检查通过后再发布当node scripts/publish-check.js退出码为 0、npm run build:all npm test均正常结束时即可执行 MCP/README.en.md 中 Publishing 小节给出的命令npm publishpackage.json的publishConfig已固定access: public与registry: https://registry.npmjs.org/发布命令无需额外参数。npm publish会自动再次触发prepublishOnly重复执行一遍build:all与npm test所以如果网络不稳定发布过程中的构建可能比单独预跑时更耗时。发布完成后的验证方式同样来自 README安装新包并跑安装器npm install -g icss-mcp-server icss-mcp-installicss-mcp-install会自动配置 Cursor自动配置失败时README 给出的替代路径是手动编辑~/.config/cursor/mcp_settings.json把icss服务的args指向全局安装目录下的server.js然后重启 Cursor。已知限制publish-check.js属于纯静态检查它校验文件、版本字符串、依赖声明和数据库大小但不替代运行时验证。数据库内容是否正常、MCP 工具能否真正返回结果要靠npm test和test-inspiration.js这类测试脚本来确认。脚本中数据库检查只是存在且大于 1KB缺失时仅告警不算失败但如果你刚跑过build:alldata/icss.db应该已经生成此时告警反而值得复查构建是否完整。排查数据库问题时MCP/README.en.md Troubleshooting 给出的重建方式rm -rf data/icss.db npm run build会删除本地data/icss.db并重新拉取执行前请确认当前目录下的 data 文件可以重建。【免费下载链接】iCSS不止于 CSS项目地址: https://gitcode.com/GitHub_Trending/ic/iCSS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表