DEV Community

Theo Paris
Theo Paris

Posted on • Edited on

8 3

Creating A Typescript Project

Hello everyone, today I am going to be teaching you how I make new typescript projects. Most of the files here are based on my personal preference but you can change them to yours. I plan on making a series of posts for working with monorepos (workspaces) and installing the necessary Visual Studio Code Extensions.

Installation

You can use any package manager (yarn or npm), but today I'll be using pnpm.

Initializing the Project

This command will create the template package.json file for us to use. This file will store all of our dependency versions and our npm scripts.

pnpm init -y
Enter fullscreen mode Exit fullscreen mode

The next command we will be running is for initializing a git repository. Git is a version control system will help us to manage and store our code and to help us with collaboration.

git init
Enter fullscreen mode Exit fullscreen mode

Typescript + Prettier + ESLint Installation

The next thing you'll want to do is install all of the development dependencies. Prettier is for formatting your code which makes it much more readable.

pnpm i -D typescript @types/node prettier eslint eslint-config-prettier eslint-plugin-prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser
Enter fullscreen mode Exit fullscreen mode

Setting Up The Configuration Files

Next we will need to set up the configuration files for the various packages.

.prettierrc (Prettier)

{
    "tabWidth": 4,
    "printWidth": 80,
    "trailingComma": "all",
    "semi": true
}
Enter fullscreen mode Exit fullscreen mode

.eslintrc.json (ESLint)

{
    "extends": [
        "prettier",
        "plugin:@typescript-eslint/recommended",
        "prettier/@typescript-eslint"
    ],
    "parser": "@typescript-eslint/parser"
}
Enter fullscreen mode Exit fullscreen mode

tsconfig.json (Typescript)

This is our typescript build configuration file. You can set declaration to true if you are making a library for other developers to use in their own packages.

{
    "compilerOptions": {
        "target": "ES2019",
        "module": "CommonJS",
        "moduleResolution": "node",
        "skipLibCheck": true,
        "resolveJsonModule": true,
        "esModuleInterop": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "allowSyntheticDefaultImports": true,
        "declaration": false,
        "outDir": "dist"
    },
    "include": ["src"],
    "exclude": ["node_modules", "**/*.spec.ts"]
}
Enter fullscreen mode Exit fullscreen mode

.gitignore

# Distribution
dist
out
build
node_modules

# Logs
*.log*
logs

# Environment
*.env*

# Misc
.DS_Store
Enter fullscreen mode Exit fullscreen mode

package.json

Finally, we will add a scripts section to the package.json. This will let us build the project with pnpm run build. Keep in mind that the following code block does not contain the full package.json, only the scripts section.

    "scripts": {
        "build": "tsc --build"
    },
Enter fullscreen mode Exit fullscreen mode

Final Notes

Now you can create your source files in the src folder of your project. I have also created a github template repository for you to initialize your projects with if you do not want to follow all of these steps each time you create a new project.

That's it! Thanks for reading one of my first dev.to posts.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay