Skip to content

Commit 0dc33aa

Browse files
fix(vscode): make the packaged .vsix actually load (Refs #62) (#63)
Building the .vsix per #62 surfaced a wiring defect: PR #58 switched the compile to `--vscode-extension` codegen, whose auto-glue emits a top-level `require("@hyperpolymath/affine-vscode")` — an unpublished npm package — while the repo still routed activation through the hand-written `src/index.cjs` + vendored `src/affine-vscode-adapter.cjs`. Result: VS Code loaded `src/index.cjs` -> `require("../out/extension.cjs")` -> MODULE_NOT_FOUND on `@hyperpolymath/affine-vscode`; the extension crashed on activation. Fix, using the mechanism affinescript already provides: - `compile`/`vscode:prepublish`: pass `--vscode-extension-adapter=../src/affine-vscode-adapter.cjs` so the auto-glue requires the already-vendored adapter by relative path (no npm package, resolves offline). `affinescript compile --help` documents this flag precisely for "vendoring a custom adapter". - `main`: `./src/index.cjs` -> `./out/extension.cjs` — the directly-loadable entry the `--vscode-extension` codegen is designed to produce (#58/#105's stated end-state). `src/index.cjs` is now dead and removed. - `vscode:prepublish`: no longer shells through `npm run` (repo CLAUDE.md bans npm) — it is the affinescript invocation directly. - Add `.vscodeignore` so lockfiles/build noise stay out of the .vsix. - `.gitignore`: ignore bun/deno lockfiles and the built `*.vsix` (distributed via GitHub Release, not git), extending the #57 policy. Verified: `out/extension.cjs` loads standalone; from the packaged .vsix's bundled tree `extraImports()` returns {Vscode, VscodeLanguageClient} with only host-provided `vscode` stubbed; `activate`/`deactivate` present. `my-lang-0.3.0.vsix` (324 files) now packages as a *functional* artifact. Refs #62 Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 0caa014 commit 0dc33aa

5 files changed

Lines changed: 21 additions & 38 deletions

File tree

.gitignore

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,15 @@ Thumbs.db
3737
*.log
3838
target/
3939
node_modules/
40-
# npm lockfile — not tracked, mirroring the Cargo.lock policy above
41-
# (the only one is vscode-extension/package-lock.json)
40+
# JS lockfiles — not tracked, mirroring the Cargo.lock policy above
41+
# (all under vscode-extension/; the extension is built on a registry-reachable
42+
# host with Deno/bun per the package-manager policy, lockfile regenerated there)
4243
package-lock.json
44+
bun.lock
45+
bun.lockb
46+
deno.lock
47+
# Built VS Code extension artefact — distributed via GitHub Release, not git
48+
*.vsix
4349
_build/
4450
deps/
4551
.elixir_ls/

vscode-extension/.vscodeignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Build/runtime artefacts that should not ship in the .vsix.
2+
# (node_modules production deps ARE bundled by vsce — do not ignore them.)
3+
deno.lock
4+
bun.lock
5+
bun.lockb
6+
.gitignore
7+
.vscodeignore
8+
package-lock.json
9+
**/.DS_Store

vscode-extension/out/extension.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ exports._freeHandle = _freeHandle;
9898
// Inserted by --vscode-extension (issue #105): auto-generated glue so this
9999
// file is directly loadable as a VS Code extension's `main`. Replaces the
100100
// previously hand-written index.cjs + vendored adapter boilerplate.
101-
const _makeVscodeBindings = require("@hyperpolymath/affine-vscode");
101+
const _makeVscodeBindings = require("../src/affine-vscode-adapter.cjs");
102102
exports.extraImports = function() {
103103
return _makeVscodeBindings(
104104
require("vscode"),

vscode-extension/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"activationEvents": [
1818
"onLanguage:my"
1919
],
20-
"main": "./src/index.cjs",
20+
"main": "./out/extension.cjs",
2121
"contributes": {
2222
"languages": [
2323
{
@@ -76,8 +76,8 @@
7676
]
7777
},
7878
"scripts": {
79-
"vscode:prepublish": "npm run compile",
80-
"compile": "affinescript compile --vscode-extension src/extension.affine -o out/extension.cjs",
79+
"vscode:prepublish": "affinescript compile --vscode-extension --vscode-extension-adapter=../src/affine-vscode-adapter.cjs src/extension.affine -o out/extension.cjs",
80+
"compile": "affinescript compile --vscode-extension --vscode-extension-adapter=../src/affine-vscode-adapter.cjs src/extension.affine -o out/extension.cjs",
8181
"package": "vsce package"
8282
},
8383
"devDependencies": {

vscode-extension/src/index.cjs

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)