{"id":29395262,"url":"https://github.com/cursor-ide/vsce-create","last_synced_at":"2025-07-10T11:27:29.518Z","repository":{"id":303082254,"uuid":"1014342852","full_name":"cursor-ide/vsce-create","owner":"cursor-ide","description":"Low-level scaffolding engine used internally by @vsce/cli — JSR package","archived":false,"fork":false,"pushed_at":"2025-07-05T14:46:20.000Z","size":21,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-05T16:00:17.150Z","etag":null,"topics":["deno","developer-tools","esm","esmodules","javascript","js","jsr","jsr-package","nodejs","npm","tooling","toolkit","ts","typescript","vsce","vscode","vscode-extension","vscode-extension-template"],"latest_commit_sha":null,"homepage":"https://jsr.io/@vsce/create","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cursor-ide.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-05T14:30:46.000Z","updated_at":"2025-07-05T15:16:14.000Z","dependencies_parsed_at":"2025-07-05T16:02:23.040Z","dependency_job_id":"943dd842-5e46-4b80-9442-eaf35c3605b0","html_url":"https://github.com/cursor-ide/vsce-create","commit_stats":null,"previous_names":["cursor-ide/vsce-create"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cursor-ide/vsce-create","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cursor-ide%2Fvsce-create","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cursor-ide%2Fvsce-create/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cursor-ide%2Fvsce-create/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cursor-ide%2Fvsce-create/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cursor-ide","download_url":"https://codeload.github.com/cursor-ide/vsce-create/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cursor-ide%2Fvsce-create/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264572307,"owners_count":23630226,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deno","developer-tools","esm","esmodules","javascript","js","jsr","jsr-package","nodejs","npm","tooling","toolkit","ts","typescript","vsce","vscode","vscode-extension","vscode-extension-template"],"created_at":"2025-07-10T11:27:28.957Z","updated_at":"2025-07-10T11:27:29.506Z","avatar_url":"https://github.com/cursor-ide.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `@vsce/create`\n\n\u003e 🦕 The **Deno-native** scaffolding tool for modern, dual-runtime VS Code extensions\n\n[![JSR Scope](https://jsr.io/badges/@vsce)](https://jsr.io/@vsce)\n[![JSR](https://jsr.io/badges/@vsce/create)](https://jsr.io/@vsce/create)\n[![JSR Score](https://jsr.io/badges/@vsce/create/score)](https://jsr.io/@vsce/create/score)\n[![GitHub CI](https://img.shields.io/github/actions/workflow/status/cursor-ide/vsce-create/create.yml?branch=main\u0026label=sync)](https://github.com/cursor-ide/vsce-create/actions/workflows/create.yml)\n[![Last Updated](https://img.shields.io/github/last-commit/cursor-ide/vsce-create?label=last%20synced)](https://github.com/cursor-ide/vsce-create/commits/main)\n[![License](https://img.shields.io/github/license/cursor-ide/vsce-create)](./LICENSE)\n\n`@vsce/create` bootstraps **Deno-first**, **web-compatible** VS Code extensions in seconds. Each project it generates is ready to build with [`@vsce/bundler`](https://jsr.io/@vsce/bundler) and ships with type-safe VS Code APIs via [`@typed/vscode`](https://jsr.io/@typed/vscode).\n\n\u003e **Heads-up!** `@vsce/create` is the low-level *scaffolding engine* used internally by [`@vsce/cli`](https://jsr.io/@vsce/cli) — our all-in-one, fully-featured development suite. If you want the entire toolchain (project generation, dev server, bundling, testing, publishing) in one command, install **`@vsce/cli`** instead.\n\n---\n\n## ✨ Features\n\n| Category | Details |\n|----------|---------|\n| 🦕 **Deno-Native** | No Node.js toolchain required—scaffolds projects you can run \u0026 build with Deno only. |\n| 🌐 **Dual Runtime** | Templates target both Desktop and Web extension hosts out-of-the-box (`extensionKind: [\"workspace\", \"web\"]`). |\n| 🏗️ **Rich Templates** | `basic`, `treeview`, `webview`, and `language-server` templates plus shared utilities. |\n| 📦 **Bundler-Ready** | Generates a `scripts/build.ts` that calls `@vsce/bundler` for a single-file, web-safe bundle. |\n| 🔧 **VS Code Tasks** | Emits `.vscode/tasks.json` \u0026 `.vscode/launch.json` for one-click build, test \u0026 debug. |\n| ✅ **Strict Types** | Uses `@typed/vscode` definitions with full TypeScript `--strict` compliance. |\n\n---\n\n## 📥 Installation\n\n```bash\n# Add to your Deno project (recommended)\ndeno add @vsce/create\n```\n\nor run directly without installation:\n\n```bash\ndeno run -A jsr:@vsce/create@latest init my-extension\n```\n\n\u003e `@vsce/create` targets **Deno ≥1.44** and **VS Code ≥1.90**.\n\n---\n\n## 🚀 Quick Start\n\n```bash\n# Scaffold a Tree View extension\ndeno run -A jsr:@vsce/create init my-treeview --template treeview\ncd my-treeview\n\n# Build the extension (outputs dist/extension.js)\ndeno task build\n\n# Test everything\ndeno task test\n```\n\nResulting structure (example `treeview`):\n\n```text\n my-treeview/\n├── README.md                # template-specific doc\n├── deno.json                # import map + tasks + lint/fmt\n├── jsr.json                 # JSR package meta\n├── package.json             # VS Code extension manifest\n├── scripts/\n│   └── build.ts             # calls @vsce/bundler\n├── src/\n│   └── extension.ts         # your entry point\n└── .vscode/\n    ├── extensions.json      # recommended VS Code extensions\n    ├── tasks.json           # build / test tasks\n    └── launch.json          # debug configuration\n```\n\n---\n\n## 🗂️ Available Templates\n\n| Template | Description |\n|----------|-------------|\n| `basic` | Minimal “Hello World” command—perfect seed for small utilities. |\n| `treeview` | Demonstrates `TreeDataProvider`, custom view registration and refresh command. |\n| `webview` | Shows how to create a Webview panel with static HTML content. |\n| `language-server` | Runs a minimal language server in a Web Worker using `vscode-languageclient/browser`. |\n\n---\n\n## 🔄 Development Workflow\n\n1. **Start coding** inside `src/extension.ts` (or additional modules).  \n   VS Code + the [Deno extension](https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno) give you instant type-checking and IntelliSense.\n2. **Press `F5`** to run the *Run Extension* launch target (uses Deno to execute `scripts/build.ts`).\n3. **Run tests** with `deno task test` (generated for you).  \n   All templates include example tests you can extend.\n4. **Bundle** with `deno task build` for production. The output `dist/extension.js` works for both desktop and web versions of VS Code.\n\n---\n\n### Web Extension Support\n\n#### Why Web Extensions?\n\nThis package is optimized for the **VSCode Web Extensions** runtime as our **pragmatic path to bringing VSCode extension development to Deno**. While our ideal would be full parity with the Node.js extension development environment, the web extension runtime represents the best available approach given current VSCode architecture limitations.\n\n**The Reality:**\n\n- 🎯 **Goal**: Enable Deno-native VSCode extension development\n- ⚠️ **Challenge**: VSCode's extension host is deeply integrated with Node.js\n- ✅ **Solution**: Leverage the web extension runtime for Deno compatibility\n- 🪄 **Future**: Working toward fuller Node.js runtime parity as the ecosystem evolves\n\n#### Universal Compatibility\n\nThe web extension runtime enables you to create extensions that run **everywhere** - both desktop VSCode and web-based environments (vscode.dev, github.dev, GitHub Codespaces):\n\n```typescript\nimport * as vscode from \"@typed/vscode\";\n\n// Web extensions run on BOTH desktop and web VSCode\nexport function activate(context: vscode.ExtensionContext): void {\n  // Full VSCode API support: TreeView, Commands, Language Features, etc.\n  const provider = new MyTreeDataProvider();\n  vscode.window.createTreeView('myView', { treeDataProvider: provider });\n  \n  // Limitation: Node.js APIs are not available (browser sandbox restrictions)\n  // However, we can use Deno's web API's as a drop-in replacement for some Node.js APIs\n  // The extension works identically on desktop and web!\n}\n```\n\n**Key Benefits:**\n\n- ✅ **Universal compatibility** - One extension runs on desktop AND web VSCode\n- ✅ **Full VSCode API access** - Commands, UI, language features, etc.\n- ✅ **Modern deployment** - Works in vscode.dev, github.dev, Codespaces\n- ⚠️ **Browser limitations** - No Node.js/filesystem APIs (applies to web runtime only)\n\n## 🚧 Deno VSCode Extension Ecosystem (WIP) 🚧\n\n`@typed/vscode` is part of a complete ecosystem for Deno-based VSCode extension development. Explore these complementary packages:\n\n### 🛠️ Development Tools\n\n**[@vsce/cli](https://jsr.io/@vsce/cli)** - Command-line tools for Deno VSCode extensions\n\n```bash\ndeno add @vsce/cli\n```\n\n- Project scaffolding and templates\n- Development server with hot reload  \n- Build and packaging utilities\n- Extension testing and validation\n\n**[@vsce/create](https://jsr.io/@vsce/create)** - Project generator for new extensions\n\n```bash\ndeno add @vsce/create\n```\n\n- Interactive project setup\n- Multiple template options (basic, language server, tree view, etc.)\n- Deno-optimized project structure\n- Best practices and conventions built-in\n\n### 🔧 Build and Bundle\n\n**[@vsce/bundler](https://jsr.io/@vsce/bundler)** - Web extension bundler for Deno\n\n```bash\ndeno add @vsce/bundler\n```\n\n- Bundle Deno code for VSCode web extensions\n- Tree shaking and optimization\n- Source map support\n- Multi-target builds (desktop + web)\n\n### 🧪 Testing Framework\n\n**[@vsce/testing](https://jsr.io/@vsce/testing)** - Testing utilities for VSCode extensions\n\n```bash\ndeno add @vsce/testing\n```\n\n- Mock VSCode APIs for unit testing\n- Extension host simulation\n- Language server testing utilities\n- TreeView and UI component testing\n\n### 📚 Complete Example\n\n```typescript\n// extension.ts - Built with the full @vsce ecosystem\nimport * as vscode from \"@typed/vscode\";\nimport { createLanguageServer } from \"@vsce/cli\";\nimport { MockExtensionContext } from \"@vsce/testing\";\n\nexport async function activate(context: vscode.ExtensionContext): Promise\u003cvoid\u003e {\n  // Full ecosystem integration example\n  const server = await createLanguageServer({\n    name: 'my-language-server',\n    languages: ['typescript', 'javascript']\n  });\n  \n  context.subscriptions.push(\n    vscode.languages.registerHoverProvider(['typescript'], server),\n    vscode.languages.registerCompletionItemProvider(['typescript'], server)\n  );\n}\n```\n\n## Runtime Compatibility\n\n| Environment | Support | Notes |\n|-------------|---------|-------|\n| **VSCode Desktop** | ✅ Full | All APIs available |\n| **VSCode Web** | ✅ Most APIs | No Node.js/filesystem APIs |\n| **Deno Runtime** | ✅ Type-checking | For development and testing |\n| **GitHub Codespaces** | ✅ Full | Web + server APIs |\n| **vscode.dev** | ✅ Web APIs | Browser-based development |\n\n---\n\n## 📚 Docs \u0026 Resources\n\n- VS Code Extension API: \u003chttps://code.visualstudio.com/api\u003e\n- VS Code Web Extensions Guide: \u003chttps://code.visualstudio.com/api/extension-guides/web-extensions\u003e\n- Deno Runtime Documentation: \u003chttps://docs.deno.com\u003e\n- JSR Package Registry: \u003chttps://jsr.io\u003e\n\n---\n\n## License\n\nMIT License - see [LICENSE](./LICENSE) for details.\n\n---\n\n**Happy coding with Deno + VSCode! 🦕⚡**\n\n*Part of the [@vsce ecosystem](https://jsr.io/@vsce) for Deno-based VSCode extension development.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcursor-ide%2Fvsce-create","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcursor-ide%2Fvsce-create","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcursor-ide%2Fvsce-create/lists"}