Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First Class TypeScript support #654

Closed
wants to merge 13 commits into from
Closed

Conversation

lmeysel
Copy link

@lmeysel lmeysel commented Jul 28, 2023

I pretty much appreciate your library but everytime I use it, I wonder if it would be possible to have it integrated into modern tooling. There are several issues regarding typescript support, but honestly, most of them are not very satisfying and the @types/zigg-js package also does not integrate well in my environments.

So I started an experiment which utilizes typescript's interface Augementation to "polyfill" the generated routes and migrated the whole JS code to TypeScript.
For better integration I also introduced a modified version of the vite-plugin from #321 (comment).

As a result the new ziggy could come with out-of-the-box TS support and vite integration.

I hope you like it and you are interested in discussing this!

Highlights

Vite Integration

Use ziggy in vite and generate route-declarations everytime the route-files change:

import { defineConfig } from 'vite';
import Ziggy from 'ziggy-js/vite';

defineConfig({
  plugins: [
    Ziggy({ declarations: 'only' }),
  ]
});

TS Integration

// routes/web.php
Route::get('/users/{user}/posts/{post}/comments', [CommentsController::class, 'index'])->name('users.posts.comments');

Now VSCode will support you like this:
image

... and, much better, like this:
image
image

@lmeysel
Copy link
Author

lmeysel commented Jul 28, 2023

Sorry, I guess I messed with a lot of peanut-commits.... I close this PR and open a new one with a clean history ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant