How to set up a JavaScript/TypeScript project

Running a Javascript file Suppose you have a javascript file that you want to run from the command line. Install node or deno Run the file with node <filepath.js> or deno <filepath.js> or deno run <filepath.js> Running a TypeScript file Suppose you have a typescript file that you want to run from the command line. Install node. npm comes bundled with node. Install the typescript compiler with npm install -g typescript. Note that this will install the latest version of typescript compiler globally. Compile the file with tsc <filepath.ts> Run the file with node <comiled-filepath.js> Alternatively, you can install the ts-node package with npm install -g ts-node. This will install the latest version of ts-node globally. ts-node compiles the file on the file and executes it. ts-node <filepath.ts> Running a Javascript project The project directory must have a package.json file. This file is used by npm and can also be used to define additional information if you plan to publish the module to npm registry. Install the dependencies mentioned in the package.json file with npm install, more details about package.json The package.json file have a scripts section, this defines the commands that can be run with npm run <command>. In this section, you can define commands like start: node index.js; test: jest ., then if you run npm run test it will run the tests. Note, npm defines three commands which can be run without using the run command, npm start, npm test and npm stop. The start command defaults to using index.js file The package.json file has a main field, this is the file that is executed when you import the package in another file. By default, npm treats the imports as CommonJS modules, if you are using ES modules, you need to add the type key in your package.json with value module. Then all files must use import/export syntax. { name: "my-package", version: "1.0.0", main: "index.js", scripts: { start: "node index.js", test: "jest .", }, type: "module", dependencies: { jest: "^27.5.1", }, } Running a TypeScript project Using ts-node [!NOTE] You can avoid using ts-node and use tsx which supports TypeScript out of the box. No need to add additional support for esm modules ...

November 14, 2024 · 3 min · 621 words · Mohit Sharma

All the ways to `git add`

I always get confused with, should I run git add ., or should I run git add --all, or should I run git add -A? Given all these commands, do a similar thing, confusion is bound to happen. Thankfully, it’s not just me. So I decided to take a deep dive into add command of git, to end this confusion once and for all. What does add even do? The add command adds your changes to staging area. Staging area is a buffer zone where you place your files before committing them. This buffer zone allows you to be selective with your commits, there are some files that you want to commit now and some files that you want to commit later. Staging area is also known as index. ...

October 24, 2024 · 3 min · 560 words · Mohit Sharma

How to parse json in terminal using jq

A practical tutorial on jq So here’s the problem statement: Find the repository on github in which you have made most number of commits? And you need to do this on terminal (no python) Ofcourse, one can use python to find the answer, and it might be probably easy for you, if you have been using python for last many years. But let’s see if I can do this in terminal with jq and while doing so, let’s learn about it. ...

April 1, 2024 · 4 min · 787 words · Mohit Sharma

How to `find` files in terminal?

Manager: Hey, I need your help, I have couple of images that are taking a lot of space on my PC, I want to delete them. How can I do that? Developer: Well that should be simple. Here, you go. This looks for all files with .png extension in the current directory and its subdirectories (using -R flag), then pipes those file names to rm command to delete them. ls -R | grep ".png$" | xargs rm Manager: Nice, but wait. This will delete all the png files in the current directory and its subdirectories. I only want to delete in specific directories. ...

February 21, 2024 · 2 min · 363 words · Mohit Sharma

First Post

First Post This is an example post to test the website. It just contains some rough snippets. def hello_world(): print("Hello, World!")

February 2, 2024 · 1 min · 21 words · Mohit Sharma