publish-release

v2026.09.24

Guidelines for building, packaging, and publishing projects. Use when modifying publishConfig, resolvePluginService, package.json main/types/exports for publishable libraries, checking dist folder generation, or debugging package resolution for released artifacts.

GitHub
安装命令
npx skhub add jimmypaolini/publish-release
Markdown
SKILL.md

Publish and Release

Build Output and Publishing

  • Every build writes into its own project's dist/ — packages/logger/dist, applications/caelundas/dist — never a top-level one. dist is already gitignored and in the folder-structure rule's ignorePatterns.
  • configuration/tsconfig.json sets declaration: true, so every build emits .d.ts beside its .js. Turning it off silently removes the types a published package ships.
  • A package's main, types, and exports point at TypeScript sources, and publishConfig carries the emitted dist/ paths beside them — pnpm applies those at publish time, so one manifest serves the workspace and a published consumer. Verify a change here by packing, not by reading: pnpm pack in the package, then inspect the tarball's package.json.
  • files must name dist. Without it, packing falls back to the ignore files and the tarball ships no build output at all.
  • A plugin entry's resolvePluginService must stay a static import. A dynamic import() escapes the @swc-node/register require hook into Node's own ESM resolver, and nx g then fails with Cannot find module './modules/plugin/plugin-context.utilities'.

Why the manifest fields stay on sources, which publishConfig fields pnpm actually applies, and why shrinking the Nx plugin closure buys nothing is ADR 0009. Do not point main or exports at dist/ — it deadlocks the plugin graph load and breaks fallow-dead-code and vitest.

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

.agents/skills/publish-release

默认分支

main

最新提交

5ac136d

Tree SHA

9af071d