The goal of this guide is to have a lot of the stuff that coders may want to look up all the time with some of the most universally used tools.
One of the best ways to grow and learn as a developer is to be part of the grander developer community, there are endless slack and discord channels to join. devNursery.com is a website where I have many playlists of videos I've made on every topic you can imagine, we have two communities you can join to meet other developers and to seek or provide mentorship.
devNursery discord channel = https://discord.gg/hkdrPwX
devNursery spectrum chat = https://spectrum.chat/devnursery?tab=posts
The Bash terminal comes out of the box in unix based systems like Macs and Linux. On windows to use bash you can either download git-bash or use Windows Subsystem for Linux (WSL) to have a Linux environment within your windows install. Having access to the bash shell is a must for any developers workflow.
mkdir folderName create a folder
touch fileName create a file
rm -r folderName remove folder
rm fileName remove file
mv filename newFolder/filename move a file
cp filename filenamecopy make a copy of the file
cat filename print file contents to terminal
ssh-keygen generate an SSH key (usually done in the ~/.ssh folder)
> take output of command on left and write to file on the right
>> take output of command on left and append to file on the right
alias delfold="rm -r" give a command an alias, only lasts for that terminal session, to make it permanent add command to ~/.bashrc, ~/.bash_profile or ~/.profile
Depending on the particular setup for your bash one or more of these files are read whenever a terminal session begins. This is where updates to your path, aliases, functions and other things you want to always happen should be placed.
nano, vi and vim are text editors that accessible within the Bash terminal, they may come already installed or you may need to install them. To edit files with these the commands are pretty straightforward
When connecting to a web server where there is no GUI these are usually your main option for editing files.
Visual Studio Code is the free text editor from Microsoft that is packed with great features and shortcuts to make development more pleasant. Here are some of the most popular command.
ctrl+/comment or uncomment code
altand set multiple insertion points
VSCode also has a huge library of extensions that make life better such as...
- live server: spin a static web server from any folder
- peacock: have different VSCode windows in different colors
- Rainbow Brackets: Color your curly and square brackets
- auto-rename: Auto rename closing tags when editing opening html tags
- auto-close: Auto generate the closing tag for html tags
- Prettier: Auto format your code
- Live-share: work on the same code at the same time
- Gitlens: supercharge the git features in VSCode
- SQLtools: Explore and manage databases from VSCode
- Remote - SSH: Work with files from a remote server as if they were on your pc
- Better Comments: More colorfule comments in your code
- Polacode: tool for better screenshots
Versioning software for keeping track of versions of your project. Most used for code but can keep track of versions of any files.
- Don't make a git repository inside of another repository
- One code project, one repository
- the root of the repository should be the root of your project, which is where the main project files are located (package.json, Gemfile, manage.py, composer.json)
git init initialize a new git repository
git add . add all files in the current folder and its subfolders to staging
git commit -m "a message" commit files currently in staging
git status red files are changed files not in staging, green are in staging
git remote list projects remote repositories (github, gitlab, bitbucket, heroku)
git remote add remoteName remoteURL add the url as a remote under the specified name
git remote rm remoteName remove the particular remote
git push remoteName branchName push code of a particular branch to the remote
git pull remoteName branch pull code of a particular branch from the remote
git checkout -b branchName create a new branch, starts as copy of current branch
git branch list all branches and mark current branch
git checkout branchName switch to specified branch
git merge branchName merge specified branch into current branch
npm init -y start a new node project by create a package.json file
npm install packageName install the specified package to your project
npm install -g packageName install the specified package globally so all project can use it (use rarely)
npm install --save-dev packageName install the specified package as a development dependency (won't install in a production environment)
npm install install all dependencies listed in package.json
npm run scriptName run particular script specified in package.json
npm start will run start script, if there isn't one will default to "node server.js"
Running a node script represents a single process on your computer, to give you access to information about your process a
process object is available to all script run with node. You can see all its contents with
A couple of useful parts to know...
You can pass variable into the process.env object like so.
MYVAR=5 node server.js
you can access this variable in this script like this...
libraries like dotenv allow you to specify environment variables in a special .env file which will then add these variables to process.env when the script starts
You can pass arguments into your scripts like
node server.js "my argument"
All the arguments get passed into an array at process.argv. The first two element of array are file references so the first argument is at
npm install -g lite-server
Allows you to generate a static web server in the current folder with the command
npm install -g nodemon
Stackoverflow.com is great resources for any and all problems
HackerRank.com and CodeWars.com are great places to practice code
Generalassemb.ly is a great place to enroll in a coding bootcamp if switching careers, they also often schedule free workshops and social events.
Repl.it is a great place to test out new languages before install on your machine
Codepen.com another great site to test html/css/js ideas
RunKit.com is a place to prototype NodeJS project
For places to deploy your project checkout this blog post with a comprehensive list => https://tuts.alexmercedcoder.com/deploy/
Find videos on the basics of git, vscode, bash and more at intro.alexmercedcoder.com
Trello, Notion.so, Asana, Airtable, and Google Docs are great tools for project management and team coordination