From 60e482aa809fd89c865bfb5ec95b97a739235615 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Sat, 8 May 2021 11:35:20 -0400 Subject: [PATCH] Fix running the extension (#181) I'm not sure how my setup was different but I was unable to get the extension to run locally without adding a binary. This mirrors what Svelte does so I'm assuming it's the way it's supposed to be loaded. --- .vscode/launch.json | 15 ++++++--------- tools/astro-languageserver/bin/server.js | 6 ++++++ tools/astro-languageserver/tsconfig.json | 3 ++- tools/astro-vscode/contributing.md | 20 ++++++++++++++++++++ tools/astro-vscode/src/index.ts | 4 +++- 5 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 tools/astro-languageserver/bin/server.js create mode 100644 tools/astro-vscode/contributing.md diff --git a/.vscode/launch.json b/.vscode/launch.json index 25ec2df98..531210a57 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,16 +3,12 @@ "version": "0.2.0", "configurations": [ { - "type": "pwa-extensionHost", - "request": "launch", "name": "Launch Client", + "type": "extensionHost", + "request": "launch", "runtimeExecutable": "${execPath}", - "args": ["--extensionDevelopmentPath=${workspaceRoot}"], - "outFiles": ["${workspaceRoot}/tools/astro-vscode/dist/**/*.js"], - "preLaunchTask": { - "type": "npm", - "script": "build:vscode" - } + "args": ["--extensionDevelopmentPath=${workspaceRoot}/tools/astro-vscode"], + "outFiles": ["${workspaceRoot}/tools/astro-vscode/dist/**/*.js"] }, { "type": "node", @@ -20,7 +16,8 @@ "name": "Attach to Server", "port": 6040, "restart": true, - "outFiles": ["${workspaceRoot}/tools/astro-languageserver/dist/**/*.js"] + "outFiles": ["${workspaceRoot}/tools/astro-languageserver/dist/**/*.js"], + "skipFiles": ["/**"] } ], "compounds": [ diff --git a/tools/astro-languageserver/bin/server.js b/tools/astro-languageserver/bin/server.js new file mode 100644 index 000000000..1967fff94 --- /dev/null +++ b/tools/astro-languageserver/bin/server.js @@ -0,0 +1,6 @@ +#! /usr/bin/env node + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { startServer } = require('../dist/index'); + +startServer(); \ No newline at end of file diff --git a/tools/astro-languageserver/tsconfig.json b/tools/astro-languageserver/tsconfig.json index 7b2ff1ea2..b20132ea6 100644 --- a/tools/astro-languageserver/tsconfig.json +++ b/tools/astro-languageserver/tsconfig.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "src" + "rootDir": "src", + "target": "ES2020" }, "include": ["src"], "exclude": ["node_modules"] diff --git a/tools/astro-vscode/contributing.md b/tools/astro-vscode/contributing.md new file mode 100644 index 000000000..d9f1bd59e --- /dev/null +++ b/tools/astro-vscode/contributing.md @@ -0,0 +1,20 @@ +# Contributing + +## Development workflow + +In the monorepo first install and build Astro: + +```shell +yarn install +yarn build +``` + +To start the development server run: + +```shell +yarn dev:vscode +``` + +Then in the __Debug__ panel select __Launch Extension__ from the dropdown and click the run button. + +Screen Shot 2021-05-07 at 8 51 37 AM diff --git a/tools/astro-vscode/src/index.ts b/tools/astro-vscode/src/index.ts index 672a074d0..d48f2723c 100644 --- a/tools/astro-vscode/src/index.ts +++ b/tools/astro-vscode/src/index.ts @@ -17,7 +17,7 @@ export async function activate(context: vscode.ExtensionContext) { /** */ function createLanguageService(context: vscode.ExtensionContext, mode: 'doc', id: string, name: string, port: number) { const { workspace } = vscode; - const serverModule = context.asAbsolutePath(require.resolve('astro-languageserver')); + const serverModule = require.resolve('astro-languageserver/bin/server.js'); const debugOptions = { execArgv: ['--nolazy', '--inspect=' + port] }; const serverOptions: lsp.ServerOptions = { run: { module: 'astro-languageserver', transport: lsp.TransportKind.ipc }, @@ -60,6 +60,8 @@ function createLanguageService(context: vscode.ExtensionContext, mode: 'doc', id }; const disposable = activateTagClosing(tagRequestor, { astro: true }, 'html.autoClosingTags'); context.subscriptions.push(disposable); + }).catch(err => { + console.error('Astro, unable to load language server.', err); }); return client;