This is a skeleton app for people who want to use TypeScript in ExpressJS. A docker-compose file is included for those who want to run it in a container.
You don't have to use the docker-compose file if you're fine with installing NodeJS and NPM locally. Feel free to delete it if that's the case.
Make sure you have NodeJS installed (preferably the LTS version). This will also install npm
. For Windows users you might consider Chocolaty and for Mac users obviously Brew. These are both package managers that will help you install and update all kinds of packages via the CLI. Highly recommended.
- Open a terminal window (command prompt, git bash, powershell)
- Check if NodeJS is installed by typing
node --version
into the terminal. It should print a line with something likev18.18.0
. - Check if NPM is installed by typing
npm --version
into the terminal. It should print a line with something like9.8.0
.
- Clone or download this repository to your computer
- Open a terminal in the project directory.
- Install the dependencies by running
npm install
.
- To use the provided
.editorconfig
file, install the EditorConfig plugin. - To use the provided
.eslintrc.cjs
file, install the ESLint plugin.
If you're like me and you dislike NodeJS and NPM piling up heaps of folders on your pc, run TypeScript in Docker!
- Install Docker Desktop.
- Open a terminal window (Powershell on Windows, regular command prompt will not work).
- Clone this repository.
- Move to this folder inside the terminal.
- Run
docker-compose up
and open a new terminal OR rundocker-compose up -d
which allows you to work in the same terminal. - Follow the steps from Instructions from step 4, but prefix all the commands with
docker-compose exec ts-app
. - Close the docker container by pressing
ctrl
+c
ordocker-compose down
, respectively for step 5
In the package.json you can see which commands (in scripts) are used to run or build the server. If you are using docker please keep in mind that you will have to use docker-compose exec ts-app
to execute the scripts.
npm run dev
: in the dev environment we use this command to actually compile the TS codenpm run start
: in production we use this command the start a server in production
One note on running the command npm run start
. We use nodemon to monitor the node server and to restart the server automatically. If we use node start.js
we have to restart the server ourselves. You could install the nodemon package globally, but in this repo we installed it locally.
We use ES6 module system to import and export modules.
We save credentials to other services in a variables.env
file. This file is included in this template. However, it is common use not to include it in a public repository. There are some default key value pairs included to demonstrate its working.
You can change the ports of your server via variables.env
We choose to compile TS to JS and run the compiled JS to test it. However it is possible to run typescript in express Nodemon and TS
For setting up the TS we used this source
In this project Prisma is used for Object Relation Mapping. It comes with all kind of utilities as models, seeds and migration.
If you want to change somte items on the the db for yourself:
- Update the
scheme.prisma
if necessary - Update the
seed.ts
if necessary - Throw away the db
- Run
npx prisma migrate dev
Use sqlite studio to check database changes.