fix(build): compiled binary missing @modelcontextprotocol/sdk modules
shadcn (web devDependency) pulled a second peer copy of @modelcontextprotocol/[email protected].1 (zod@3), so the server's zod@4 copy lived in the npm cache as sdk/1.30.1_1. `deno compile --exclude-unused-npm` embeds that _1 folder but the pruned snapshot resolves it as sdk/1.30.1, so every SDK import failed at startup with ERR_MODULE_NOT_FOUND. - drop the shadcn CLI dependency; vendor its tailwind.css (the only runtime use) as apps/web/app/shadcn-tailwind.css, removing the duplicate - scripts/check-compiled-binary.sh: run the compiled binary with an empty env and `--role preflight`; it must load the full module graph and exit 2 on config validation. Wired into `deno task ci` (check:binary) and the Dockerfile build stage. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
266d66ddbb
commit
f05d6195a3
8 files changed
+158
-1148
No files matched your search
@@ -0,0 +1,100 @@
|
||||
/* 取自 npm:[email protected] dist/tailwind.css(MIT),原样内置。
|
||||
不再把 shadcn CLI 列为依赖:它经 zod@3 拉出第二份 @modelcontextprotocol/sdk(peer 变体),
|
||||
deno compile --exclude-unused-npm 会按裁剪后的快照找 sdk/1.30.1、实际嵌入的是 sdk/1.30.1_1,编译产物启动即缺模块。
|
||||
加组件用 deno run -A --no-lock npm:[email protected] add <name>,不要写进锁文件。 */
|
||||
|
||||
@theme inline {
|
||||
@keyframes accordion-down {
|
||||
from {
|
||||
height: 0;
|
||||
}
|
||||
to {
|
||||
height: var(
|
||||
--radix-accordion-content-height,
|
||||
var(--accordion-panel-height, auto)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes accordion-up {
|
||||
from {
|
||||
height: var(
|
||||
--radix-accordion-content-height,
|
||||
var(--accordion-panel-height, auto)
|
||||
);
|
||||
}
|
||||
to {
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Custom variants */
|
||||
@custom-variant data-open {
|
||||
&:where([data-state="open"]),
|
||||
&:where([data-open]:not([data-open="false"])) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-closed {
|
||||
&:where([data-state="closed"]),
|
||||
&:where([data-closed]:not([data-closed="false"])) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-checked {
|
||||
&:where([data-state="checked"]),
|
||||
&:where([data-checked]:not([data-checked="false"])) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-unchecked {
|
||||
&:where([data-state="unchecked"]),
|
||||
&:where([data-unchecked]:not([data-unchecked="false"])) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-selected {
|
||||
&:where([data-selected="true"]) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-disabled {
|
||||
&:where([data-disabled="true"]),
|
||||
&:where([data-disabled]:not([data-disabled="false"])) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-active {
|
||||
&:where([data-state="active"]),
|
||||
&:where([data-active]:not([data-active="false"])) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-horizontal {
|
||||
&:where([data-orientation="horizontal"]) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@custom-variant data-vertical {
|
||||
&:where([data-orientation="vertical"]) {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
|
||||
@utility no-scrollbar {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user