#svelte #cli #cli-tool #utilities #sveltekit #action

bin+lib sveltecli

Svelte 是一个简单的 CLI 工具,用于原型设计和开发 Svelte 组件

5 个不稳定版本

0.3.0 2023年2月4日
0.2.1 2023年2月4日
0.2.0 2023年2月3日
0.1.1 2023年2月2日
0.1.0 2023年2月2日

#2285命令行工具

Download history 8/week @ 2024-03-09 1/week @ 2024-03-16 5/week @ 2024-03-23 145/week @ 2024-03-30 131/week @ 2024-06-08 5/week @ 2024-06-15

136 每月下载次数

MIT 许可证

21KB
486

Svelte Cli

使用最新路由快速构建 Svelte/SvelteKit 模板的 Svelte cli。完全使用 Rust 编写。

工作进展中

安装

cargo install sveltecli

请确保 ~/.cargo/bin 在您的 PATH 中。
未来将添加更多与发行版相关的选项 :)

用法

sv add [pages] -p [path]

此命令将添加指定的路由文件和基本模板。示例

sv add ps -p reports

这将向您的 reports 文件夹添加 +page.server.ts(如果不存在,将创建它)并使用以下模板

import { Actions, PageServerLoad } from "./$types";

export const load = (({ }) => {
  return {};
}) satisfies PageServerLoad;

export const actions = {
    formAction: async ({ request }) => {
        const form = await request.formData();
        const id = form.get('id');

        return { id };
    },
} satisfies Actions;

您也可以在一个命令中添加多个文件

sv add ps p e l

页面

命令 页面(ts) 页面(js)
e +error.svelte +error.svelte
l +layout.svelte +layout.svelte
lc +layout.ts +layout.js
ls +layout.server.ts +layout.server.js
p +page.svelte +page.svelte
pc +page.ts +page.js
ps +page.server.ts +page.server.js
s +server.ts +server.js

配置

语言

sv config lang [js or ts]

这将设置语言。 js 语言将不会使用类型,文件将具有 .js 扩展名,cli 将在临时文件夹中搜索 .js 文件。

模板

sv config temp [path_to_your_templates_folder]

这将设置您的默认模板路径。在此文件夹中放置您的默认模板文件。页面的名称必须与默认模板相匹配。您不需要放置所有页面,如果某些页面缺失,cli 将使用默认模板。然后添加它

默认模板

+error.svelte

<script lang="ts">
    import { page } from '$app/stores';
</script>

<h1>{$page.status}: {$page.error.message}</h1>

+layout.svelte

<script lang="ts">
    import { LayoutData } from "./$types";
    export let data: LayoutData;
</script>

<slot />

+layout.ts

import { LayoutLoad } from "./$types";

export const load = (({ }) => {
    return {};
}) satisfies LayoutLoad;

+layout.server.ts

import { LayoutServerLoad } from "./$types";

export const load = (({ }) => {
    return {};
}) satisfies LayoutServerLoad;

+page.svelte

<script lang="ts">
    import { PageData } from "./$types";
    export let data: PageData;
</script>

<h1>Page</h1>

+page.ts

import { PageLoad } from "./$types";

export const load = (({ }) => {
    return {};
}) satisfies PageLoad;

+page.server.ts

import { Actions, PageServerLoad } from "./$types";

export const load = (({ }) => {
    return {};
}) satisfies PageServerLoad;

export const actions = {
    formAction: async ({ request }) => {
        const form = await request.formData();
        const id = form.get('id');

        return { id };
    },
} satisfies Actions;

+server.ts

import type { RequestHandler } from "./$types";

export const GET = ( ({ url }) => {
    return new Response(String(url));
}) satisfies RequestHandler;

依赖关系

~1.7–2.6MB
~52K SLoC