4 Things You Should Know VSCode Can Do — Without Extensions
Tags: javascript, ide, debugging, productivity
Published: 2019-12-31 19:23:36

![](https://cdn-images-1.medium.com/max/1024/1*Y-IiktMIfxCFLSXnwzhYBw.png)

In my opinion, VSCode is the best thing ever happened to the IDE world. It’s super lightweight, feature-rich and free hence without a doubt the best IDE I have ever used in my opinion. The other biggest plus of VSCode is the community of extension developers who made our lives a whole lot easy. But today, I’m going to describe four of the most important things VSCode can do without extensions, which some developers even not know.

Feel free to read more about these in the official VSCode documentation, but first, let me point you to where to look.

#### Conditional Breakpoints

We use debug points all the time when debugging. But what if we can instruct the debug point only to hit once a given condition is met? These are called Conditional Breakpoints which are handy in especially when debugging inside loops, isolating specific scenarios and debugging edge-cases.

![](https://cdn-images-1.medium.com/max/1024/1*Vim474kHAsEy-aGuoj9-4Q.gif)<figcaption>Debugging inside a loop with conditional breakpoints</figcaption>

#### Log points

It’s quite common to add `console.log` statements in the code to quickly check whether the application is behaving the way you expected. But the pain of this is that you have to make sure that you have removed every `console.log` you added for debugging before you commit.

Log point is a variant of a debug point which logs a provided message when the debug point is hit. You have access to all of the variables in the scope where log point is added, making Log points extremely valuable and cleaner alternative to good old `console.log` statements. The hassle of cleaning up adding `console.log`s and removing them is no more.

![](https://cdn-images-1.medium.com/max/1024/1*PKgMKYCI-OXBtiN-q24o7Q.gif)<figcaption>Adding log points with variables</figcaption>

#### Tasks

VSCode tasks are a great way to bring terminal commands into VS Code (e.g, starting-up dependencies using before debugging). This allows you to quickly run frequently used shell commands with a few keystrokes.

The additional benefit of tasks is that you can even configure a given task to run immediately before a debug session is started or run immediately after a debug session using [preLaunchTask and postDebugTask properties](https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes) in your launch.json debug config. This is extremely helpful to automate preparation commands/clean up commands when debugging. (e.g, Startup 3rd party dependencies in docker as preLaunchTask, and stopping dependencies once the debug session finishes as a postDebugTask).

![](https://cdn-images-1.medium.com/max/1024/1*jZjyNhN4eIJ3ZnoXDcCE3g.gif)

#### User Inputs in Tasks and Launch Configurations

If we need to frequently change the arguments of a shell command in a VSCode task, we can define it as a [VSCode input variable](https://code.visualstudio.com/docs/editor/variables-reference#_input-variables) and provide it when the task is about to run. VSCode inputs can be used both in tasks as well as launch configurations which makes them extremely helpful.

![](https://cdn-images-1.medium.com/max/1024/1*G7jE2fAyHjxGCCvQc68WSQ.gif)

I hope this might have helped you improve your productivity, and urged you to discover more of what VSCode can do as a FREE IDE.