Building a "create-app" tool in Deno

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
do hey everyone so today um i've got about an hour so i thought i'd just do a quick uh quick stream to build the tool that we wanted to do for a while um which simply creates um creates an app so similar to you get create react app and you know uh the scaffolding for feet apps where you just type in npm in it something similar to that um but of course there are just start out templates i want to build out my own templates um over time so i've got my tools that i like to use um so i want to basically build a tool that does that for me i don't so i've been thinking about this before and i i don't think let's do create react app i don't think i want to use npm either because i want this to be i guess you could use zpm for anything yeah you could but i want to try using deno just because why not play around with deno a bit um so yeah so you can do with with kind of create react app and v and stuff you can do things like so there's a couple of ways of doing this there's an npm let me look into this npm in its command which if we jump into here um you can pass it so npm init just by itself initializes an empty node repository and um npm init initializer uh creates uh sets up a new package and this initializer here basically looks for a repository um so you can see here that uh the initializer there should be a package name called uh create hyphen initializer so on um and then what it does is it goes into that and it basically executes executes that package which is meant to do the scaffolding for you um so if we look at create react app i think it's actually got examples here uh maybe it doesn't yeah here we go yeah career react app so it basically tells you there if you do npm init react app and that means there's a package called create to react app on npm so if we look for npm create react app we should find that that's the one clear react app and same with create i think let's create beat app there we go same one so as long as you run npm init um reactor or vtap i think that's going to work alternatively you can use npx and do the full uh mpx create react app or npx create vita app so i'm going to do something similar with deno um and my one's going to be probably simpler so create react app just kind of you pass it through a template feet it gives you this kind of uh prompt um you know multi-select thing to go through uh so i'm going to do well i'll see what i can get done an hour first of all i'm just going to hardcore everything and then we'll see how much we can abstract so in theory this should work for anything but the ideal scenario is i'm going to have this create app repository it's going to have my demo script that's fine i'll you know i can call it from from directly from github wherever and it's just going to have a bunch of directories which are my templates and i will just select one of those templates so that's yeah that's what i'm going to do today so the idea here is i'll have some sort of you know react app template with some file.txt let's just start with that uh i don't know why that's associated with python but the goal here is wherever i'm going to run a script such as uh let's open up item here if i run a script such as uh you know where is deno something then run something whatever my file is called and then i say you know react app template i guess [Music] yeah and maybe give it a name so so that's the template i want to use and i want to do a new new project uh my app this should result in a directory called my app with the react app template um yeah that's that's the goal so let's uh yeah let's do that so i've done i've got some notes here on the right hand side because i had to look into a few things to see how how it worked um so i'll kind of be following some of these notes and there's a few things i still need to figure out so we'll do that here cool so deno all we need to get started deno is a ts file so let's just do um create i think the convention is underscore create apps yes and let's just cancel hello world let's just make sure all this works and um can i run this as a data file no i'm going to do well actually let's just do console.log deno.orgs and that will prompt intellij so i can set this up as a demo project and if i do deno run uh create app um hello returns hello perfect um if i right click this i can think i can just do the same here that way i can set this up in intellij so i want it yeah now it's right here and i've got my configuration here so if i can pass in arguments uh i'm not sure how to pass an argument here actually then i'll run hello no that's not how you do it [Music] um let's look at the file what's that running great app hello okay so that's that's not what i want [Music] okay well let me change this so this is string as the files upgrade let's do this hello something like that apply run that hmm that's a bit weird not quite sure how the okay well that's fine we can leave the arguments out for now i don't know how to pass in their arguments on this this thing um but at least we can run it and we can figure out the arguments later on or i can just use the i could use this guy that's perfect that's fine um all right cool so let's first thing i want to do is i want to do i'm going to be hosting this on github um so i'm going to yes let's take an example so i'm going to go over to my github and i'm going to pick a folder so let's pick youtube tutorials this guy here and so you can download so i'm going to use this as an example for testing because obviously i haven't deployed this guy yet so my goal would be for example to download you know imagine this is my repository of templates each of these will be my templates my goal here is to basically get one of these one of these directories downloaded into my my folder so and then yeah the logic's the same so i think we can just use the uh so one of the things i looked into so you can obviously download a zip um what i want to use from deno is i want to use the i wanna tar file not the zip file so let's go over to dental and see what's going on here so in dental and let's open the document standard library there is i don't think they can handle maybe there's a third party library but there's standard library you can tar and antar files that's that's what we need we want to ontar um so if we use the tarzan that won't work on zip files um the other thing i figured out here which is there's nothing built in dino yet that i know of that can uncompress which causes a bit of a problem because when we download let's go to the github api when we download the zip folder it's going to be atar.gz so it's compressed and um zipped so let's look at repositories the problem with that is of course with deno we can't unzip and uncompress um but i think there is i found a third-party library which i believe i can use to unzip so i'll bring in that third-party library and then we can just uh use the deno standard library for hopefully the rest so if i go to zip here um yeah this is what we need here so first i'm going to do is i'm just going to the response here i'm going to fetch this url here let's close that guy and this is going to be you know the the requirements code all this right now uh youtube tutorials i think it's just youtube tutorials and we'll kind of abstract that later on uh turbo and this is the ref is going to be i think that's the branch so main um let's just log out the response make sure that actually works at all i think i can just run this yes i need permissions okay just making sure my audio is okay bear with me just a moment just while i sort out the audio here i can find what i'm looking for um well i'll leave this like that i'll try to be a bit louder oh just fine thanks just please yeah cool okay so um yes i need to pass in permissions allow this is one of the good things with demo allow net so let's pass in a loud net there there we go so we've got the response so that's all we can find um so the the library let's look at the library so we've got this one so we're gonna we basically want to take this zip we want to uncompress it and then we want to unzip it and when we unzip it we only want the one i guess we only want to unzip or unpack the one directory the template we don't unzip the whole thing right because it could this could grow for a while so if we look at um so this is fine uh yes the third party library that i found which is this guy here land it's called compress so we can compress and decompress things basically um i think this actually also does you know touring and tiring etc but i'm gonna just use this to decompress what we need so we want gzip and there's a few different things you can choose up a file directly bytes stream mode we don't need stream mode that's just if you want to get the progress um choose it because it um yeah gzip file so we don't want to do a file because we're not reading in from a file although we are getting a file over the wire so i think we can do something along the lines of this so let me just bring this in i want to zip and this takes in if we go back up to gzip mod uh i think it's this guy here this takes in a new int array um an array of bytes yes which so i know for let me sort out prettier here as well prettier package just so i can format things nicely so i know that the response here you can get a array buffer array buffer now the question is how do i turn an array buffer so buffer can i turn array buffer how do i get the response into um a uint array uh deno buffer to mutant array and i think there definitely is a way because i looked into you'll see a lot of purple links here i looked into a few of these things before i think it was just yeah yeah okay so it was just new ui yeah so that should be fine um so let's do unit array um that just takes in the array buffer let's call that so we now have the buffer now we can hopefully use this gun zip so let's call this uncompressed or unzipped it's not really unzipped i'm compressed or is this unzipping yeah it's just yeah okay i think this is fine unzip um uh yeah it's uncompressed decompressed maybe that's the right terminology decompressed and we're just going to pass in the uint array um let's just log that out that should just look well just like an array of array elements um in fact if we what we should really see is so this also returns a unit array by the way so what we should really see if we do this let's just see if that works first it's taking its time cool so i'm going to run this again and what we should see is two int arrays but the second one should be slightly larger i guess because it's decompressed right and that's what we should see here so that's the first one that's yes yeah okay so that looks about right we will find out um cool so now we have an uncompressed or decompressed um zip file basically a tar file so now we're going to do is we want to use detail to on tar that so i can ontar this is what we want ontario that takes in a reader so we need to convert this to a reader um [Music] we need to i'm going to loop over that we'll come back to this stuff let's just comment all this out uh we'll log the entries that should be fine unlock the entries just see how that goes um and we want to read or close so we need to get a reader from somewhere i think antar so let's take ontar let's take ensure file and sure do we need them later on yeah same with copy actually i'll take all these um so i think this is fine so far um yes converting a uint array to a reader so i spent a while looking for something for this earlier on and i did figure out it was not particularly clear um so if i jump over to the demo uh api i think it is so jump over to the demo api then i've got great documentation although it's quite easy to to find things um for the most part there were a few things i couldn't find and that's probably just me but i'll show you what i mean so i want to take a uiint array eight array convert that to a reader um i say converter i wanna create a reader or a stream reader because i wanna pass that reader into the ontar file entire file and yeah then have access to everything cool so if i look for readers here is a file leader reader which isn't what we want immutable stream default reader readable stream reader this is just uh yeah types so this is this is the hard part trying to figure out what to do here um then a reader is an interface you can read bytes um why no there is reader is equal to uh here we go the demo buffer this is exactly what we're looking for so you can use a buffer um which if we look for buffer i think that implements reader or that is a subclass or a reader so if i do demo.buffer here we go although that is deprecated so we can use whatever that implements reader so now we have a reader um so we've basically fetched the tar dot uh g-zipped file we've uncompressed or decompressed it so we've converted that from the response we get the array buffer we wrap that in a uint8 array we decompress it using this third-party library um and then from here it's just the standard library we're going to pop that into a reader which is a demo a buffer and then we have access to all the files um and when we have access to the files or it's just a case of reading the files and just writing them to the disk so that should be fine we can filter out which files we want so let's jump over here you can see the tabs building up already but we'll close a lot of these soon because we've got this new buffer which is a class um let's see how we use this buffer buffer buffer buffer ah okay so it's not quite an example um i know that there's a uh buffer bugger buffer um let's see how to use these buffers yes so this is the one i found i think so yeah yeah perfect you can so you can initialize a buffer with a you interact okay perfect so what i can do in that case is i can take this and add that here oops import buffer from so i got any i o util these must all be packaged in the same place i o so usually there's the individual ones or you can kind of there's usually a mod that just yeah so i can take this and do mod yes and pass in the buffer there as well i think i'll probably do the same with fs just to clean that up let me just double check that as well i don't know if there's kind of a benefit in terms of tree shaking right i'm sure the tree checking happens with uh these so i mean it's fine to kind of group up some of these um is there a mod here fs slash mod maybe not fs let's jump into here oh no there is a mod and this just exports everything so i can do fs mod ts and just pass in that does that work i think so so this is just showing a red line because i haven't it's not been cached locally so let's let's do const reader is equal to new buffer and we want to pass in our decompressed and all we're doing here is then we'll so and then we're passing that to the ontar class now we're just going to loop through each entry of the entire class and that should kind of close this all right let me close that it's not exist on type buffer but buffer implements reader and i'm pretty sure reader reader see if you can find that here reader methods read oh where does clothes come from then let's see if we can find a close f method what's f here there's a reader because we don't have a closed method okay well let's see what happens if we don't close it that might work so let me run that again and see how we go here ooh lots of air it's nice okay uh you time where is this u time hmm where's that coming from copy ts io mod let's look at this copy yes this is details do i have the wrong so let's see he turns nexus down that's something that's definitely not something i'm doing but that's coming from a copy so the question is why is that i'm not even calling copy file anyway that's odd let me remove this or is that maybe the buffer i'm not sure where that's coming from okay well okay so let's let's take away a few things because i think i did a bit too much without running this let's remove all these um let's remove the let's go back to here let's just see if it's a problem with the imports or if it's a problem with the maybe the buffer no that doesn't like that at all um let's remove that let's remove that remove everything one by one back here okay that seems to be very rare it doesn't like one of my inputs let's figure out i assume it's the demo import so let's take these guys out if this fails then there's a problem with the buffer import so i might put it back to where it was before oh no it's not that one is the okay so if this works then that's an issue with the ensure file i wonder if no that's also wonderful importing this because i'm actually importing this copy function area unless it comes along with these guys then again i'm not executing those anywhere either okay so i'm gonna put these back to what they were um so let's go back to disclose a fair few of these tabs uh it's one too many and let's go back to let's look for tar tar go into archive and let's just uh ah they've got buffer here actually so let's call let's get buffer and copy from these guys let's get insured and file from these guys there we go pop that all back into place let's see if this works one's a bit slow i think this this file is actually a bit big and this is yeah maybe i should use a different uh directory but i don't think i've got any other repositories with multiple directories in them or maybe i do but that's not that's not a problem okay so let's get the reader and let's just do this for now so all this is doing is yeah additionally again the reader i'm tiring and logging the entries if we can get to that point then we've actually gotten the majority of the way because then we just need to write the contents out to disk and we've basically got you know the image we've got the majority of our working and then it's just about how much i want to additionally abstract et cetera there we go there we go that's a lot of logging okay yeah so that logs every single file uh it just kind of flattens them all out and directories actually it's giving it a oh it's a funny name doesn't it of course it does okay um so let's assume that i pass in my arguments are um let's assume my arguments are and i'm just going to pop this in a an array because that's how they come when i run this and i don't want to run this command line i don't know how to set it up with this configuration i don't want to spend any more time on that environment variables maybe no i forget that there so let's pass in uh what's the first that's docker so i want to that's docker that's the template i want to use and i want to call it i want to call this um let's just i want to call it my app so that's two things you pass in and in fact so what we do dennis got demo.orgs so this is i'm just basically marking that out for now so let's just say i want to get the template and the name equals args so i will swap this to denoax later on and we will default this we might default this we default the name actually to template so you have to pass in a template uh you don't need to pass in a name but if you do it will override it so if you don't pass in a name it's going to default to the template that's fine so that's going to be bat stopper and i guess we've provided this anyways that's fine and then what we want so what we want here is we want to check if the directory which is entry dot file name entry dot file name includes basically includes the template with a forward slash i guess i don't know if there's any kind of case where it's got nested you know i'm going to assume there's no nested uh director to the same name because i mean in this case i'm controlling it i've got my templates i'm just going to assume my template is my template there's nothing else so and we can fix that layer so if it includes template then we want to console.log so that should in theory be a lot a lot better straightaway and then what's a case of is basically on commenting some of this code so if it's a directory i want to ensure directory to make sure it creates the directory if it doesn't exist and then if it's a file you know create the file and you want to copy the content content from the uh from the entry to the file and that basically just writes it to disk right so here i'm filtering on bats docker and what it's got back is this full name that stalker so that's the directory and then it's got a bunch of files that's docker file etc and then it's got i guess another directory which is the script so on so forth um that's fine what i want is to so i want to ensure there is a directory but i don't want to ensure there is i only want to ensure there's the so the thing as well is i want to basically get rid of this i want to flatten this so i don't care about that i do care about this file and everything under it but i may want to rename bat stalker so let's create a function for this so let's do path is equal to this is each file name path is equal to um update um file name uh let's just pass in entry dot finally oops my door trying to sneak in um so that's the file name actually it's updated file name so what i want to do here is this function i'm going to take in this file name basically i want to remove anything before so i want to remove the the top layers and then i want to rename bat stalker to whatever is past this in this case i want to rename that to my app and obviously i want that to happen for every for every path um so let's do that um create that function file name which is a string and let's do uh const so let's say template index is equal to filename oh actually what we'll do here is actually pass in the template and the the app name let's remove that and let's create this again so that's a string string and that's a string that's fine file names are string so um template index is going to be so template index is going to be the file name and we're just going to search for basically the template within the index it definitely exists or else it wouldn't come into here and then we're going to use that index because we're going to say um so file name without root um is going to be the file name and we're just going to slice at the template index so that takes so the index will be somewhere here so let's just say like that's 20 and it's just going to slice it's going to take everything from here onwards so it knows everything else um it's going to be template index and then the final thing we're going to return is the file name without root um and we're just going to replace the template with the name and i think i can just add that and just return i think that's pretty self-explanatory so finally we're going to slice the template and then we just want to replace it so if i now log the file names here just see how that comes out it's taking this time here we go so there this is exactly what i want i want my app everything and the rest just stay the same perfect is that all that i've got in that file my app yeah this is a pretty small file a few test files and one script cool perfect so i mean this is the majority of the work done here um let's let's write these down so if it's directory we want to ensure this directory with the file name otherwise else we want to do this let's take this up and oops there we go so entry.file name is just going to be filename i think that's it to be honest so let's let's bring up i'll open this up here so what we should be uh i'm just trying to think of this ensure the director ensure the file well let's let's give that a go and see how it goes so what i'm going to hit play now what this is doing is it's going to go into it's going to fetch my you tutorials well we'll change this layer on which is this guy here i've added in an argument of bats docker which is my template and the name of my app so once it fetches that it decompresses it and then it unturns it and let's move this function to the bottom just so things are in order and then what it does is it goes through all the files or all the directories in the files and on in the tar untoward um in the on tar and if it includes my template what it's going to do is it's going to fix up the name i rename it and get rid of the root and basically create those files so let's see let's run that and i should see my app ensure directory i don't know where that gets is that just in the root is that just in this current directory maybe because it doesn't have like a dot slash that we're getting it's just a kind of like an absolute root i wonder if it just i need to allow read and actually i think i need to allow right as well because this creates the file then it opens it so let's add in allow reads actually you know what i'm going to do allow all because no yeah a lot all just for now because other than the one third party this guy here which is going all the way down here other than that one third party um library everything i'm importing here is my own or the standard library so that should be fine actually so i'm not too worried and you could i could even go one step further i think and only allow if i wanted to allow read and write only from the current directory which would make sense that might be safer as well i might do that later on cool so now i have my app which is yeah this is it this is exactly what i want perfect cool so this is the majority of the work done how long are we doing for time court seven so i want to finish up soonish um so i mean the rest now is just a case of abstracting things and making it nice and adding templates so what i'm going to do is i'm going to [Music] i think i'm going to use the project yeah i'm going to copy on a project as a template and it will just i'll just name it i'll rename it manually um i will change this to be passed in maybe the repository because we don't want to hardcore that in because the idea is that anyone in theory anyone then can use the script just by running demo and pointing to the um yes pointing to the github file but then i need to change my arguments so how do we want to do this so ideally what does the api look like ideally we want to run like i said so i want to run then i'll run let's assume it's local or let's assume yeah this is assuming it's local but create app or this could also just just as well be you know github.com slash you know uh i don't know um slash create slash create dot yes all right that's the same i guess that's the same so let's just assume we're running this locally so i've installed it i'm running it locally so you're done you want to do demo run create app or whatever it's going to be called um allow all all that that's fine so i want to say my username is better than this or this is where to find it i'm gonna i'm gonna maybe i'll add it by default just call your by default it's create react app otherwise you pass in you pass in directory with your templates great app yeah so by default i will assume this so okay so let's just say create app um and then what template do you want that stalker what you want to name it my app and this could all be you know actually what is for now i'm gonna just try this to work and we'll do maybe in the background or next time or at some point maybe is i'll add you know the prompt things but at least this way is a good starting point that anyone anyone could use it so let's do this here let's change this actually also need to do the branch let's do the branch as well hmm that's a bit of a pain so now we've got four arguments um this one here would be so the template would be repo and you could then do you know um let's just do keyboard repo might you know you could yeah the full path so i don't know if slash something so that's like that let's pop in the ripple here you need to add in the branch as well can i assume it's a main or a master i wonder if the github api just because i wonder we can just say you know what don't ignore this just just look for the main branch because wherever whatever default branch is that would be much um api anywhere do i have better no so github api what happens if i well we can actually just test out actually let's do this on nasa uh youtube tutorials so that works cancel that let's take away the main and see what happens does that work yeah that does work and the question is what branch does that take does that take i assume it takes the main branch yeah i'm gonna assume it takes the main branch so we're gonna go reference repositories and we're gonna go zip and download the tar file so [Music] it's got this ref it doesn't actually guess if you omit the ref the repository's default branch usually master will be used okay please make sure usb frameworks converters allow your resource location no for perfect but okay that's fine that's fine it's fine perfect so i'm gonna pass in this we pass in name and then you know in fact you could just end there but we can also pass in here so this is obviously isn't particularly great because we're passing in an array of things but you know it's not that big a deal um you could you know pass in actual key value pairs you can deno has a standard library to help you with that and you can also do some third library prompts thing where it's an interactive shell which is also quite nice but i think this will do for me so if i do this and actually let's just run it properly let's do demo.orgs that's fine so i want the repo so now i want to run this locally i want to do demo run create app that's fine um and actually i'm going to quickly do i don't run allow all oops um let's do another one that's a slash youtube tutorials that's docker and let's call this my app i think that's it let's see how this goes that's that done click over here there we go my app scripts that's perfect that's absolutely perfect now i think i'm gonna kind of try wrap it up there i'll do is i'm gonna kind of um i'll push this up and just see that it all works this is really annoying that that's associating with the with the python it's a text file come on i told you um yes let's uh let's leave at that let's add a quick readme dot fd um create app a small tool to now download template repositories help um easily download tablet uh repositories um from github let's just assume from github and then let's just do a quick uh usage um dental run create dot yes um let's say allow oh actually depends on where you want to run i think it's a love net well i'll just tell that all do you need to say what you need let's see because i think this needs and i think it needs to allow net allow reading all right i'll keep it as a level for now and then we'll do actually we can just copy this command here i don't know why i'm rewriting it all out so we do this usage well actually this will be an example so let's just copy this over up here and then let's do this repo template repo name path template app name and then let's just do a quick uh params args just to explain these so what is that template repo path and this is i don't know what this is called like the [Music] settings maybe it's here repository name well let's just pop it here tap remove path uh the github path which is usually uh username slash reporter okay do this let's just make this a bit bigger as well temporary template so template to use this must be a directory within the above repo and then finally the app name which is the name of the directory what to name the output just the output directory name cool i think that's fine and the example is just like that cool i think that's all right let's call this create app and actually let's call this react app template and my app and we'll just call that that so let's just um i think i'm going to tr just kind of almost wrap it up there so i'm just going to push this up to get out and i'll just try run it directly and make sure that this basically installs and then the idea is here that i will add multiple templates i will i mean these are just going to be for me my templates here but you can the way dental works is you can use this script remotely but you can obviously point it to wherever you you want i just happen to i'm going to happen to keep them all in the same place so what we can do is let me just bring up item here um let's do a uh get in it um let's touch a git uh ignore actually no let's yeah let's create that here but edit it here just so and the only thing i want to ignore really is my idea directory um well actually let's do the rest in intellij so that just should be a few files that's not grouped quite the way uh there we go um that's fine so let's just um check my commit message to make sure everything's fine for this new project so let's commit this um initialize repository with create app script and dummy template um empty let's call this empty template cool let's do that uh that's fine and now let's create new repository we'll call this create app create app public keep it like this it should be fine and just get this guy so how much freezing i can actually for these things all right and then i think it's just get pretty short so let's push that up cool so now we have this running so that seems all all right to me the final thing to test out is basically and this was the thing we wanted to do from the start right is that all looking okay yeah what i want to basically do is if i am cd let's go into my desktop so i have some of my desktop just a screenshot let's move that to my downloads for a moment okay so i have an empty desktop um so essentially what i want to run is i want to run a demo um allow all run i think i think i wonder if this works and then i want to do basically my name is john nasa create app i want to do what do i call it uh react app template react app template i want to call it my app is that right now run of course that's why i didn't come up let's do that um that's where we need to import it as a module maybe that's not how you do it i thought you could just run it directly like that but maybe you can't oh no it's because that's not the raw link is it maybe i need to do this i think this needs to be the raw script that's right yeah so now this is doing a check it's going to the raw script which of course i could you know put anywhere um yeah there we go done ls my app tree there we go that's exactly what i wanted that's awesome um that's perfect now obviously i need to update my templates but now this could work this work anywhere this will work for anything um if i change oh actually let me try without my app tree yeah so that's fine um and let me try of course uh youtube tutorials uh bats docker let's try this again there we go and i think how do you i can't remember how do you download demo demo download is it download uh demo run install all right okay so i can then install this i mean i can install this locally as well but if i do a demo install i think what that means i can just do no i can't can i create that let's create what's this all right that's a beat the v1 okay i don't want to beat one um but i guess similar crit app that's just going to crash right yeah of course i need you know for spare but i can basically now down once i've downloaded that just means i can do this um so i just want to do create app that stalker test oh no crap i don't know how to permission tonight requires access to allow oh how do i ah i think i need to do that when i install right i forget don't install allow all that's what i need to do installation found then install hyphen f so now if i do create app test no that's not right let me just remove that actually um so let's just clear that up let's do demo install and let's just double check i'm doing this right then i'll install and just make sure that because i think if i remember correctly um let's install dental seat down on stock martians gonna run no what i want is api document manual um install script installer is it script installer then install yes this is what i wanted um to change the executable name and serve so i think i will do that so what i'll do is i'm gonna create app use a local bit i'm going to remove that actually um because that's the um that's the feet one i must have uh source this okay so i shouldn't have any create app okay i don't have a create now so i should be able to do demo install um allow all i guess i could do that's fine allow all and i'll do hyphen n create app just like that so now when i do create app oh just need to source this again together and finally let me create that i'm going to do this run that again taking this time of course youtube tutorials and then let's treat this guy test perfect yeah that's exactly what i want that's it this guy right here which of course you could just run now as long as you've got demo you can run that anywhere that's gonna work and any directory any i mean this is quite good so i guess i'm gonna wrap it up there and the only thing that could be nice to add is or that i need to remember to add is for example for this react project once i add it in i'd want to change you know you might want to do like post install actions right you might want to add you might want to change the package json the application name for example but that's quite trivial to be honest um i could just add that as or keep out or you know add as a change me or to do in in the directory um or just leave it empty i think it will throw an error if you leave it empty maybe and that way yeah i'll figure something out there but this is yeah i think this is good enough now it's just a case of taking a template and actually adding it in um and i need to find the perfect template i've got a few projects that i've worked on recently that are quite good setups but i just want to strip them down to the minimum so for example my react template i usually go for veeds if it's a multi-page one i'll add in react router so i probably want to it's not always if i'm just kind of hacking something very quickly i just want a plain beat one if i want to do like a project where i'm doing some styling i want to bring a material ui i might want to bring in react router these things um that's mainly what i want the wanted this for i realized that a few times i set up a few um applications in the past few weeks i've been doing actually just lots of small applications and each time i'd spend after like 30 40 minutes trying to figure out how to to get or just getting the whole startup um the whole thing set up actually last live stream i did i think i spent about 30 40 minutes just setting up the basics so that's 34 minutes you can save every time and that's just kind of a good snapshot of this is what i think the best technology for this situation is um but yeah cool i think i'm gonna wrap up there i think that's good progress um yeah thanks for everyone that tuned in um and i'll see you guys soon
Info
Channel: Redhwan Nacef
Views: 93
Rating: 5 out of 5
Keywords: Software engineer, software developer, how to, how to code, coding, programming, testing, java, javascript, learn to code, learn coding, learn programming, software, technology, computer science, YouTube, Redhwan Nacef
Id: M3luUNwSybY
Channel Id: undefined
Length: 65min 48sec (3948 seconds)
Published: Fri Sep 10 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.