From 6f45277b497bc412ea9f2e73dda62a26ab9f472d Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Sat, 4 Mar 2023 10:45:18 +0100 Subject: [PATCH] #522 - Add Astro support --- CHANGELOG.md | 2 ++ src/constants/FrameworkDetectors.ts | 17 ++++++++++++++++- src/listeners/dashboard/SettingsListener.ts | 15 +++++++++++++-- src/models/Framework.ts | 1 + 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75835f5a..99a8f372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ ### 🎨 Enhancements +- [#522](https://github.com/estruyf/vscode-front-matter/issues/522): Configuration support added for [Astro](https://astro.build) + ### ⚡️ Optimizations ### 🐞 Fixes diff --git a/src/constants/FrameworkDetectors.ts b/src/constants/FrameworkDetectors.ts index 130ccc37..adcec85c 100644 --- a/src/constants/FrameworkDetectors.ts +++ b/src/constants/FrameworkDetectors.ts @@ -1,4 +1,18 @@ export const FrameworkDetectors = [ + { + framework: { + name: 'astro', + dist: 'dist', + static: 'public', + build: 'npm run build', + server: 'http://127.0.0.1:3000' + }, + requiredFiles: ['astro.config.mjs'], + requiredDependencies: ['astro'], + commands: { + start: 'npm run dev' + } + }, { framework: { name: 'gatsby', @@ -17,7 +31,8 @@ export const FrameworkDetectors = [ name: 'hugo', dist: 'public', static: 'static', - build: 'hugo' + build: 'hugo', + server: 'http://127.0.0.1:1313' }, requiredFiles: ['config.toml', 'config.yaml', 'config.yml'], commands: { diff --git a/src/listeners/dashboard/SettingsListener.ts b/src/listeners/dashboard/SettingsListener.ts index e179f703..10bbbe77 100644 --- a/src/listeners/dashboard/SettingsListener.ts +++ b/src/listeners/dashboard/SettingsListener.ts @@ -1,7 +1,12 @@ import { join } from 'path'; import { commands, Uri } from 'vscode'; import { Folders } from '../../commands/Folders'; -import { COMMAND_NAME, SETTING_CONTENT_STATIC_FOLDER, SETTING_FRAMEWORK_ID } from '../../constants'; +import { + COMMAND_NAME, + SETTING_CONTENT_STATIC_FOLDER, + SETTING_FRAMEWORK_ID, + SETTING_PREVIEW_HOST +} from '../../constants'; import { DashboardCommand } from '../../dashboardWebView/DashboardCommand'; import { DashboardMessage } from '../../dashboardWebView/DashboardMessage'; import { DashboardSettings, Settings } from '../../helpers'; @@ -62,12 +67,18 @@ export class SettingsListener extends BaseListener { if (frameworkId) { const allFrameworks = FrameworkDetector.getAll(); - const framework = allFrameworks.find((f: Framework) => f.name === frameworkId); + const framework: Framework | undefined = allFrameworks.find( + (f: Framework) => f.name === frameworkId + ); if (framework) { if (framework.static) { await Settings.update(SETTING_CONTENT_STATIC_FOLDER, framework.static, true); } + if (framework.server) { + await Settings.update(SETTING_PREVIEW_HOST, framework.server, true); + } + await FrameworkDetector.checkDefaultSettings(framework); } else { await Settings.update(SETTING_CONTENT_STATIC_FOLDER, '', true); diff --git a/src/models/Framework.ts b/src/models/Framework.ts index e8e4a92f..111c5c26 100644 --- a/src/models/Framework.ts +++ b/src/models/Framework.ts @@ -3,4 +3,5 @@ export interface Framework { dist: string; static: string; build: string; + server?: string; }