April 1, 2020

Yarn 2 (berry), Typescript, VSCode, Prettier, ESLint and Fastify

Let's configure Fastify project with Yarn 2, Typescript, VSCode, Prettier and ESLint.

Install Yarn 2 / berry #

The documentation: https://yarnpkg.com/getting-started

I assume you have the latest Yarn version (at least v1.22).

yarn set version berry

Initialize the repository #

mkdir my-project
cd my-project
yarn init
yarn add fastify typescript ts-node
yarn add @types/node eslint prettier -D

VSCode configuration #

The documentation: https://yarnpkg.com/advanced/editor-sdks

yarn add @yarnpkg/pnpify

Install SDK.

yarn pnpify --sdk
Cleaning up the existing SDK files...
Installing fresh SDKs for /Users/eshlox/projects/my-project:
✓ Eslint
✓ Prettier
✓ Typescript

Open the project in VSCode.

  1. Press Ctrl+Shift+P in a TypeScript file.
  2. Choose "Select TypeScript Version".
  3. Pick "Use Workspace Version".

package.json #

Add the start script to the package.json file.

"scripts": {
"start": "ts-node index.ts"
},

TS config #

Create Typescript configuration file.

yarn tsc --init -t ES2020

Simple API endpoint #

Add the code to the index.ts file.

import fastify from "fastify";
const server: fastify.FastifyInstance = fastify({});
const opts: fastify.RouteShorthandOptions = {
schema: {
response: {
200: {
type: "object",
properties: {
pong: {
type: "string"
}
}
}
}
}
};
server.get("/ping", opts, async (request, reply) => {
return { pong: "it worked!" };
});
server.listen(3000, err => {
if (err) {
server.log.error(err);
process.exit(1);
}
server.log.info(`Server listening on port 3000.}`);
});

Run and test the project #

yarn start

The API should be available at http://localhost:3000/ping.

© 2020 Przemysław Kołodziejczyk