From 151c3157bef28c267592ebdf717e4ff66a5b27e1 Mon Sep 17 00:00:00 2001 From: Kris Scott Date: Thu, 22 Jul 2021 14:26:57 -0500 Subject: [PATCH] Add svelte recipe to create-tauri-app (#2276) (#2279) --- .changes/cta-svelte-recipe.md | 5 ++ tooling/create-tauri-app/src/index.ts | 3 +- .../create-tauri-app/src/recipes/svelte.ts | 69 +++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 .changes/cta-svelte-recipe.md create mode 100644 tooling/create-tauri-app/src/recipes/svelte.ts diff --git a/.changes/cta-svelte-recipe.md b/.changes/cta-svelte-recipe.md new file mode 100644 index 000000000000..f0fd464c92cb --- /dev/null +++ b/.changes/cta-svelte-recipe.md @@ -0,0 +1,5 @@ +--- +"create-tauri-app": patch +--- + +Add Svelte recipe using the official template. \ No newline at end of file diff --git a/tooling/create-tauri-app/src/index.ts b/tooling/create-tauri-app/src/index.ts index 6d0a87a8c746..4eef732e1e06 100644 --- a/tooling/create-tauri-app/src/index.ts +++ b/tooling/create-tauri-app/src/index.ts @@ -12,6 +12,7 @@ import { vuecli } from './recipes/vue-cli' import { vanillajs } from './recipes/vanilla' import { vite } from './recipes/vite' import { ngcli } from './recipes/ng-cli' +import { svelte } from './recipes/svelte' import { install, checkPackageManager } from './dependency-manager' import { shell } from './shell' import { addTauriScript } from './helpers/add-tauri-script' @@ -114,7 +115,7 @@ interface Responses { recipeName: string } -const allRecipes: Recipe[] = [vanillajs, cra, vite, vuecli, ngcli] +const allRecipes: Recipe[] = [vanillajs, cra, vite, vuecli, ngcli, svelte] const recipeByShortName = (name: string): Recipe | undefined => allRecipes.find((r) => r.shortName === name) diff --git a/tooling/create-tauri-app/src/recipes/svelte.ts b/tooling/create-tauri-app/src/recipes/svelte.ts new file mode 100644 index 000000000000..61ab93c6b52f --- /dev/null +++ b/tooling/create-tauri-app/src/recipes/svelte.ts @@ -0,0 +1,69 @@ +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT + +import { join } from 'path' +import { shell } from '../shell' +import { Recipe } from '../types/recipe' + +const svelte: Recipe = { + descriptiveName: { + name: 'Svelte (https://github.com/sveltejs/template)', + value: 'svelte' + }, + shortName: 'svelte', + extraNpmDevDependencies: [], + extraNpmDependencies: [], + extraQuestions: () => { + return [ + { + type: 'confirm', + name: 'typescript', + message: 'Enable Typescript?', + default: true, + loop: false + } + ] + }, + configUpdate: ({ cfg, packageManager }) => ({ + ...cfg, + distDir: `../public`, + devPath: 'http://localhost:5000', + beforeDevCommand: `${packageManager === 'yarn' ? 'yarn' : 'npm run'} dev`, + beforeBuildCommand: `${ + packageManager === 'yarn' ? 'yarn' : 'npm run' + } build` + }), + preInit: async ({ cwd, cfg, answers }) => { + let typescript = false + if (answers) { + typescript = !!answers.typescript + } + + await shell('npx', ['degit', 'sveltejs/template', `${cfg.appName}`], { + cwd + }) + + // Add Typescript + if (typescript) { + await shell('node', ['scripts/setupTypeScript.js'], { + cwd: join(cwd, cfg.appName) + }) + } + }, + postInit: async ({ cfg, packageManager }) => { + console.log(` + Your installation completed. + To start, run the dev script: + + $ cd ${cfg.appName} + $ ${packageManager === 'yarn' ? 'yarn' : 'npm run'} tauri ${ + packageManager === 'npm' ? '-- ' : '' + }dev + `) + + return await Promise.resolve() + } +} + +export { svelte }