Setting up vite, React, TypeScript, eslint, prettier, vitest, testing-library and react-router

Sdílet
Vložit
  • čas přidán 16. 05. 2024
  • In this video I show how to setup a react app with vite, typescript, eslint, prettier, vitest, testing-library and react-router. We will use the base template for other react apps we create.
    View the starter template we create in this video here: github.com/CodingGarden/react...
    💜 Watch live on twitch: / codinggarden
    📩 Sign up for my mailing list: list.coding.garden/
    💖 Donate: coding.garden/donate
    😍 Pledge: coding.garden/pledge
    💬 Discord: coding.garden/discord
    🎉 Stickers: coding.garden/stickers
    💻 Gear List: coding.garden/gear
    🔎 Search for more Coding Garden videos here: coding.garden/videos
    🗣 View the Coding Garden FAQ here: github.com/CodingGarden/faqs
    00:00:00 Intro
    00:00:10 Hello Friends
    00:01:26 generate vite + react + typescript app
    00:02:15 generated app overview and cleanup
    00:06:53 assets vs public folder
    00:07:38 vite hot reloading and auto refresh
    00:08:36 setup eslint
    00:10:14 airbnb style guide
    00:10:50 setup eslint airbnb config
    00:12:58 setup eslint airbnb typescript config
    00:13:56 eslint parserOptions: project - fix eslintrc + tsconfig.json
    00:16:02 fixing code with eslint
    00:17:29 disabling eslint rules
    00:19:10 setup prettier
    00:21:20 setup eslint prettier config and plugin
    00:23:54 vitest setup
    00:27:17 testing-library setup
    00:29:00 jest-dom setup
    00:29:57 our first unit test
    00:35:07 A note on testing / query methods
    00:37:52 setup react-router v6
    00:38:50 export "wrapped" App component
    00:40:00 HashRouter vs BrowserRouter
    00:41:15 setup Routes
    00:42:13 setup "pages" directory
    00:42:58 Home page
    00:43:47 NotFound page
    00:45:07 hash routes
    00:45:30 Link component
    00:46:17 NotFound test setup
    00:48:08 Fix App exports
    00:49:50 NotFound failing test
    00:50:54 fix main.tsx WrappedApp import
    00:51:20 A note on unit tests vs integration tests
    00:53:40 That's All Folks
    00:54:06 catJAM
  • Věda a technologie

Komentáře • 149

  • @user-hz3ku5rg3q
    @user-hz3ku5rg3q Před 8 měsíci +4

    I have been updating a react app that I 'inherited' and decided to use vite, vitest and eslint. I read through countless articles, all saying different things, all configuring their apps slightly differently. Then I found this video .... a presenter that speaks clearly, presents the content at a comfortable pace to follow along, doesn't rush or skip over important bits. One of the best coding tutorials I have come across. Thanks to this video, i was easily able to re-configure the app. Great job.

  • @abeljr88
    @abeljr88 Před rokem

    I have set up my own boilerplate in the past using also vite and some linting packages. But this video is complete that it includes test packages for testing. Love it.

  • @Andrei-pq6qp
    @Andrei-pq6qp Před rokem +1

    This is gold. Excellent explanations. I love it.

  • @tiagonobrega8046
    @tiagonobrega8046 Před rokem +1

    This video was extremely helpful to me. Thank you for the great content man, you covered a lot of stuff and explained it all in a way that it was easy to understand!

  • @tukitukitsuki
    @tukitukitsuki Před rokem +1

    Amazing! This is the first time I have seen such a detailed video.

  • @maplestoryinchinese
    @maplestoryinchinese Před rokem +29

    This is amazing! Quality content like this deserves so much more recognition.

  • @user-qj7io2sd1k
    @user-qj7io2sd1k Před rokem +1

    Good work man, one of the best videos on setting up a Vite project with Vitest + RTL.

  • @ievlevdmitriy
    @ievlevdmitriy Před rokem

    Amazing! I've already shared this video to my friends. Thank you for your excellent job!

  • @ThomasPoth
    @ThomasPoth Před rokem

    This video was very helpful for me. And there were no hiccups. I was able to code properly without any problems or weird bugs getting in my way. Thank you very much!

  • @theprimecoder4981
    @theprimecoder4981 Před rokem

    Thank you, I have been looking for this video for weeks.

  • @christiannikolov923
    @christiannikolov923 Před rokem

    So glad you uploaded it can't wait to get my hands on it.

  • @neddev2990
    @neddev2990 Před rokem +4

    You are so damn efficient at writing code! It's a pleasure to watch ;)

  • @julianm786
    @julianm786 Před 9 měsíci

    Thanks, I was struggling so much with the setup, you made it really easy

  • @whoa_dood
    @whoa_dood Před rokem

    Great Video CJ, thank you for all the hard work!

  • @DmitryBulgakovmitrich
    @DmitryBulgakovmitrich Před 7 měsíci

    Thank you for this guide!
    I found answers to some questions I had before.

  • @zb2747
    @zb2747 Před rokem

    Thank you for this video - would love more on formatting and linting configuration, CI/CD automation tools, and more on testing.

  • @domoknows3275
    @domoknows3275 Před 5 měsíci

    amazing tutorial. pretty much going to use this as my default starting vite project

  • @riendlyf
    @riendlyf Před rokem

    I was looking for that setup!! Thanks!!

  • @wellingtonostemberg7585
    @wellingtonostemberg7585 Před 10 měsíci

    Thank you too much!
    You helped me solving a problem, nobody says that we need to add the file information on tsconfig -> include, this helped me a lot

  • @fernandoferrari9937
    @fernandoferrari9937 Před rokem

    congrats for the video, so instructional. i was looking for something like this.

  • @chuckydigitalworldwide

    That was amazing!! Thanks! Glad I found this channel

  • @BenMakerProducer
    @BenMakerProducer Před rokem +4

    Nice video !! It would have been great to see more examples with TypeScript and react-router (loaders, react-query, params, matches, ...) 😁

  • @christopheraulotte5277

    Really great tutorial. You know your subject, you are cool and fun when you talk. Amazing, I recommend.

  • @sanjitselvan5348
    @sanjitselvan5348 Před rokem

    Thanks for this setup video!

  • @Hattrick249
    @Hattrick249 Před 10 měsíci

    thank you for this video, really appreciate you taking the time to walk through everything! I'm working through The Odin Project and am currently on the React testing lessons. They teach you how to use create-react-app to build applications (which has Jest and the react testing library configured out of the box), but I much prefer Vite. This video includes everything that I need to know to still follow the curriculum despite the differences in tech used.

  • @Fullflexno
    @Fullflexno Před rokem +1

    Love it! Great job, CJ!

  • @davidaviles5032
    @davidaviles5032 Před rokem

    This was by far one of the most amazing videos I have ever seen. Setting up ESLint has been so foreign and walking through a good set up is much appreciated. I will say I had a lot of trouble configuring ESLint with Prettier
    This was because I had Prettier Extension installed as well as ESLint. I followed your steps but something was conflicting. I ended up turning off my Prettier Extension. Come to find out my formatting was not working and my prettier config file was not being recognized. I really do not know what. Everything worked when I added the prettier rules from my config file into my eslint config file, which according to docs, overrides prettier config file. So I ended up removing prettier config file, extended the prettier recommended as the video shown and any rules I did not like from the default linting rules for prettier formatting I added inside the prettier rules in the eslint file and everything worked as expected. For example JSX attributes would have double quotes fixed on save and js would allow single quotes.
    I know this was long but hope you read it and provide any insight you might have. Thnks again for the video

  • @elenafromny9567
    @elenafromny9567 Před 6 měsíci

    OMG! I tryied to set up jets for 2 days and now I found this video, thank you a lot!

  • @AI-su3ds
    @AI-su3ds Před 11 měsíci

    I'm happy I found your channel. Thank you for helpful videos

  • @beakerbkr
    @beakerbkr Před rokem +1

    Fantastic content with great instruction!

  • @jasonnares9634
    @jasonnares9634 Před rokem

    This is just amazing. Thank you so much.

  • @stepo355
    @stepo355 Před 6 měsíci

    Nice overview, thank you!

  • @raiybow
    @raiybow Před rokem

    thanks for sharing, it's very helpful !

  • @belaldif6689
    @belaldif6689 Před rokem +1

    High quality content, we are looking for the next: React-testing-library 😁

  • @youngun550
    @youngun550 Před rokem +10

    8:32 to 8:37 is charming. I've seen this whole video 3 times now. It's really helped me get a firm sense of what eslint actually is and how to get a good ts environment. This is one of the best tutorials I've seen in a long time!

  • @jfeyers
    @jfeyers Před 7 měsíci +11

    If anyone runs into an error (related to expect.extend(matchers);) in your jest setup upon running a test, change your matchers import to "import * as matchers from '@testing-library/jest-dom/matchers';"

    • @dheerajs5774
      @dheerajs5774 Před 6 měsíci

      Tnx a lot man 🙏

    • @nikhilpandeydigital
      @nikhilpandeydigital Před 6 měsíci

      Thank you so much

    • @zaphry
      @zaphry Před 4 měsíci

      god is that you? came from the heavens to help us peasants???? love u

  • @michaela.178
    @michaela.178 Před 2 měsíci

    Now that was a good tutorial!
    No point in excusing yourself for setting up tests the way you did. It's exactly what one would need to get started. I'd also add that one shouldn't get too obsessed with the designations of test types, you'll need those terms to keep some structure in your zoo of tests, eventually. Primarily, the set of all tests serves as cleverly laid out tripwires that keep us informed about unintentional changes, which helps our(future)selfes and anyone else getting on the project to make changes confidently.

  • @paulraven8236
    @paulraven8236 Před rokem

    nice! actually I came here to check my eslint config, but I'm vitesting now :D . I've never used testing libraries before, but man I'm hours just looking at dom checking accesibility and stuff. Thanks!! you improved my workflow :)

  • @flnnx
    @flnnx Před 11 měsíci

    That was very informative. Thanks

  • @BJAnderson
    @BJAnderson Před rokem +6

    Long time angular dev here. Was looking for a good tutorial on how to set up a real react project that I would actually use to build a professional (linted/formatted/tested) project from. This is that tutorial. A-ma-zing!!! Thank you so much!

  • @AngelHdzMultimedia
    @AngelHdzMultimedia Před rokem +1

    Hey CJ, we don't need Auto Rename Tag extension anymore! The setting is Enable Linked Editing.
    Same with Bracket Pair Colorizer, the setting is Bracket Pair Colorization.
    Cheers!

  • @ArleiFerreiraFarnetaniJunior

    Congratulations and thanks a lot! 👊👊👊

  • @sanhvo6105
    @sanhvo6105 Před 11 měsíci

    i am beginner. Thank you so much for sharing this useful knowledge. This is wonderfull

  • @djarma7980
    @djarma7980 Před 4 měsíci

    Thank you a lot of for saving my time😅, this video help me a lot!

  • @3ggr
    @3ggr Před rokem

    awesome tutorial!🔥

  • @ubitubee
    @ubitubee Před rokem +1

    this is gold!

  • @hjrr6471
    @hjrr6471 Před rokem

    thank you for this kind vid

  • @Pouetpouets
    @Pouetpouets Před 8 měsíci

    Thanks, helped me a lot

  • @jaidervanegas255
    @jaidervanegas255 Před rokem +1

    Great job!

  • @alexandr8151
    @alexandr8151 Před rokem

    really useful video, thanks a lot!

  • @bahramsarafzadeh8250
    @bahramsarafzadeh8250 Před rokem

    Nice! You're a life saver...

  • @endlessnameless3613
    @endlessnameless3613 Před rokem +1

    Big thanks for this! It would be nice do the same but with webpack. I mean React app from scratch, without CRA💫

  • @lucasvasconcelos8161
    @lucasvasconcelos8161 Před rokem

    Thanks, dude!

  • @agustinperez8700
    @agustinperez8700 Před rokem

    This video is weasome, It has all the configurations that you always look for

  • @adarshchhokar3818
    @adarshchhokar3818 Před rokem

    AYYY I LOVED THAT CATJAM

  • @PeriklesPeriklesoglu
    @PeriklesPeriklesoglu Před 9 měsíci

    thank you

  • @tesohi
    @tesohi Před 4 měsíci

    jesus christ, it helped so much!
    I really thank you a lot!!

  • @rcchandan
    @rcchandan Před 2 měsíci

    Reloading VS Code is so normal, Its now part of the development process 😂😂.
    Great content though, Helped me migrate a codebase from webpage to vite.

  • @kinglouis5190
    @kinglouis5190 Před 10 měsíci

    sir i love your turorial am your follower from cameroon

  • @SidneiMV
    @SidneiMV Před rokem

    Great job bro! video is liked.

  • @user-xh1dq5vf8s
    @user-xh1dq5vf8s Před rokem

    Thank you!!!

  • @juniorbytes
    @juniorbytes Před rokem

    I am use BrowserRouter to work at the browser because I put a specific path, for example path='/login'. And work my test too

  • @papacktrue
    @papacktrue Před rokem +1

    Thank you! so helpfull!

  • @DARSHAN1212
    @DARSHAN1212 Před rokem

    I 💌🍀Love Coding Garden!!

  • @boyefrederic4716
    @boyefrederic4716 Před rokem +1

    Hi @Coding garden!
    This is an amazing content. I have a question though, can we do this kind of config with a nexjts project too

    • @CodingGarden
      @CodingGarden  Před rokem +1

      You can definitely use eslint and prettier with next.js, but not vite (next.js uses swc under the hood - swc.rs/). You should also be able to use vitest and test-library with next.js

  • @davioliveira-yj7qv
    @davioliveira-yj7qv Před rokem +1

    Valeu!

  • @helloWorldPlus
    @helloWorldPlus Před rokem

    Something I would add is the import order. It takes some time to be doing the imports order manually.

  • @isurumaldeniya9536
    @isurumaldeniya9536 Před 7 měsíci +2

    Thank you CJ for the super helpful video.
    If someone get error when accessing `toHaveTextContent` when writing tests add `import '@testing-library/jest-dom/vitest' ` in setupTest.ts file

  • @user-kw9cu
    @user-kw9cu Před rokem

    thanks

  • @ontheruntonowhere
    @ontheruntonowhere Před rokem +3

    I like almost everything about this but I feel like the WrappedApp thing is not efficient or necessary. Otherwise BIG PROPS to you for putting this all together. I'm integrating much of this into my own boilerplate setup. 👍👍

  • @richard7542
    @richard7542 Před rokem

    cool, thanks

  • @som3ah0
    @som3ah0 Před rokem

    wow super wow really for such content ... wish this channel get bigger and bigger bist wishes for you really ... thank you so mush pro

  • @beshoosamy8452
    @beshoosamy8452 Před rokem

    Amazing Video! Can you make a video about deploying vite app with react-router-dom 6.6+ to GitHub pages?

  • @moezbenrebah5516
    @moezbenrebah5516 Před 9 měsíci

    But what if I need to setup react app vite with only RTL, I mean without using vitest? How to bootstrap that in the config files?

  • @benberkayozdemir
    @benberkayozdemir Před rokem

    great video for beginners like myself. i use prettier as extension in vscode, should i disable and use it as dependency?

    • @CodingGarden
      @CodingGarden  Před rokem +1

      I believe you need the extension installed for the eslint rules to work.

  • @user-ib7ex2dw6j
    @user-ib7ex2dw6j Před 3 měsíci

    most video i watch abt that they are using mac os but im using windows sometimes while following up like when i want to use vite some files are missing and aloot of errors appears any advice

  • @kabo123
    @kabo123 Před rokem

    is this compatible with the add storybook command?

  • @kennethmatov1546
    @kennethmatov1546 Před rokem

    Very informative! Is there a way to automate all these initial setup steps?

    • @CodingGarden
      @CodingGarden  Před rokem +5

      You can click "use this template" on the github repo, or you can use a tool like degit.
      Repo is here: github.com/CodingGarden/react-ts-starter
      If you want to use degit, you can type "npx degit CodingGarden/react-ts-starter your-app-name", to create a folder with the base template.

    • @kennethmatov1546
      @kennethmatov1546 Před rokem

      @@CodingGarden Thank you so much.

  • @abuzain859
    @abuzain859 Před 5 měsíci

    Hey there!
    I watched your video and it is awesome . Now i am using the Vitest in my project but I am getting this error :
    ( Not implemented: window.computedStyle(elt, pseudoElt)
    at module.exports (C:\Users\Faizan\Desktop\full-stack
    ode_modules\jsdom\lib\jsdom\browser
    ot-implemented.js:9:17) )

  • @DmitriyLekomtsev
    @DmitriyLekomtsev Před rokem

    Is there Vite template with all of this preconfigured?

  • @temurkhan9601
    @temurkhan9601 Před 6 měsíci

    very usefull video thank you for makin it. I have question I feel like I am following each steps one by one but somehow I still can manage to miss something or I dunno at some point I have a different result than the video. Can it be because now the codes changes a little or my previous setting are not allowing it or I am really missing something.
    Who else had a same issue ?

    • @CodingGarden
      @CodingGarden  Před 5 měsíci

      Sorry for the late reply. There were some breaking changes in version 6 of @testing-library/jest-dom
      I updated the template to include the fixes: github.com/CodingGarden/react-ts-starter/commit/a1b2aa106cacd5f2377a4b1800879e058e3bfe25

    • @temurkhan9601
      @temurkhan9601 Před 5 měsíci

      @@CodingGarden u d man. Tyvm

  • @sebastianchaca00
    @sebastianchaca00 Před rokem +1

    I have type error on my vite react app but still working, how can I make it throw an error like CRA ? I followed your steps but I don't know how s supposed to work. Thanks

  • @morpheusmatrix1073
    @morpheusmatrix1073 Před rokem

    Hi great video ! But am getting some error. I choosed React at the first input, but the second just propose me javascript and typescript. So I choosed Javascript as variant. But am getting error in loading page "Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/jsx". Strict MIME type checking is enforced for module scripts per HTML spec." Plz help

  • @danielpreza4159
    @danielpreza4159 Před rokem

    do you have pettier installed either like a dependency or as an extension as well?

    • @CodingGarden
      @CodingGarden  Před rokem

      I have it as both a dependency and extension. The npm dependency is used in conjunction with eslint for "eslint fix all auto fixable problems". If I want to format files manually without eslint, I can run "Format Document With -> Prettier" in VS Code (this uses the prettier extension only).

  • @emil4483
    @emil4483 Před rokem

    Are you perhaps planning to release an edited version of 'Intro to React with TypeScript' on CZcams?
    I noticed that you jumped from "Intro to TypeScript + Express" directly to "Setting up vite..." Thanks!

    • @CodingGarden
      @CodingGarden  Před rokem +1

      I plan to re-do it sometime this week using this template as a starter. Last time I got a bit in the weeds. However, the VOD will be available on the archive channel soon.

    • @emil4483
      @emil4483 Před rokem

      @@CodingGarden Great news ✨

    • @emil4483
      @emil4483 Před rokem

      @@CodingGarden 😅 Hey CJ, is it safe to assume at this time that this episode is unlikely to appear? Greetings

  • @michelmbili
    @michelmbili Před rokem +1

    Is there any reason for using function App () {} instead of the arrow function ?

    • @maplestoryinchinese
      @maplestoryinchinese Před rokem +2

      Nope, only reason not to use an arrow function is when you're working with methods as using them would cause issues around the value of .this keyword

  • @senokertonegoro4999
    @senokertonegoro4999 Před rokem

    Good

  • @asyncawaited
    @asyncawaited Před rokem

    "This video is just starting, but you've probably been watching CZcams all day."
    Based.

  • @azamatcto
    @azamatcto Před 8 měsíci

    where is placed expect() function

  • @karlkrasnowsky3895
    @karlkrasnowsky3895 Před 8 měsíci +1

    7:37 : Looks like the latest vite installer adds eslint by default.

  • @Californ1a
    @Californ1a Před rokem

    Personally not a huge fan of Prettier. Quite a few of the opinions in it don't match my preferred eslint configs, so format on save always ends up making eslint complain if I use Prettier, especially for stuff like arrow functions or ternaries (when to line break, place ? and : at start or end of line, use or don't use extra indent when nested, etc.). For that reason I've been using HookyQR's Beautify, but it hasn't been updated in over 3 years (so I've largely just been using the built-in formatter, since vscode 1.63.2 in Nov 2021 with the multi-language syntax) - I really wish there was a beautify/prettier-type of extension that just used your eslint config rather than their own opinions and much smaller list of options. There is Prettier ESLint, which just runs prettier and then eslint --fix, but that seems like a poor workaround for something that should just be built into the base formatting extension itself, using the actual eslint config for the formatting, rather than needing to format it twice. I'd essentially want the opposite of eslint-config-prettier, instead of disabling eslint rules to fit prettier, I'd want to override prettier rules to match eslint. The built-in formatter's been doing alright for me though.

  • @coderboysobuj
    @coderboysobuj Před rokem

    Help -> React router dom with vite project doesn't work on server when i refresh the page, it's shows me server 404 page

  • @Cognitoman
    @Cognitoman Před 2 měsíci

    Ohh so the public is like a place for images, videos audio etc… so that when when you build your files they are safe. If you were to put images in the assets folder they would get deleted every time during build time… I deleted that public folder… wonder if there is way to just ignore folders or files… in your assets folder so it doesn’t get deleted..

  • @karlkrasnowsky3895
    @karlkrasnowsky3895 Před 8 měsíci

    2:04 ... By naming it react-ts-app it automatically created tsconfig for you and you weren't prompted if you wanted typescript or not? what sort of magic is this?

  • @runningtractor
    @runningtractor Před rokem

    eslint-plugin-prettier vs. prettier-eslint, which one is the best? another video about setting prettier-eslint?

    • @CodingGarden
      @CodingGarden  Před rokem

      eslint-plugin-prettier adds rules to your eslint config that correspond to prettier formatting rules, so when you run "eslint fix all auto fixable problems", it using prettier rules to auto fix things in a single command.
      prettier-eslint is separate from eslint and is a 2 part process. It first runs prettier to format your files and then "eslint fix all auto fixable problems".
      You can read more about this here: prettier.io/docs/en/integrating-with-linters.html

    • @alext5497
      @alext5497 Před rokem

      Just don't use prettier. Easy

  • @yolla_4
    @yolla_4 Před rokem

    what font are you using?

    • @CodingGarden
      @CodingGarden  Před rokem

      Anonymous Pro - more info here: github.com/CodingGarden/vscode-settings#font

  • @pkvpraveen
    @pkvpraveen Před 10 měsíci

    When I converted all my jest based tests to vitest, It took a looong time to execute 😢

  • @quickguidesbynatanoob9867

    Can this also be used in JS react not TS? thanks

    • @CodingGarden
      @CodingGarden  Před rokem +1

      Yes that is possible. The airbnb setup would be slightly different but it is possible.

    • @GMEveryday
      @GMEveryday Před rokem

      @@CodingGarden my biggest problem with vite react is it doesn't show errors on vscode terminal you have to constantly open browser console to see the problem. For beginners like me, it's time consuming. You know any work around with that?

  • @thibao8726
    @thibao8726 Před 11 měsíci

    thanks bro , you can help how can you show Emoji 8:05 same you

  • @Cahnisama
    @Cahnisama Před rokem

    Thanks steven seagal