Home >Web Front-end >JS Tutorial >A Complete Node.js TypeScript Setup with Rollup, Jest, and Nodemon
Modern JavaScript development often benefits from using Node.js with TypeScript, leveraging its type safety and enhanced tooling for scalability. This is further amplified by integrating a robust bundler, testing framework, and automatic reloading. This article guides you through setting up a Node.js project with TypeScript, Rollup, Jest, and Nodemon for a streamlined development experience.
Configuring a Node.js project with TypeScript can be complex, involving multiple tools and configurations. This often leads to a cumbersome workflow. This article presents a simplified approach using the latest tools, addressing common setup challenges:
.js
extensions in import statements.This configuration streamlines the development process, making it more efficient and maintainable.
Before you begin, ensure you have:
Let's create a basic Node.js project with TypeScript:
Project Directory: Create a new project directory and navigate to it:
<code class="language-bash">mkdir my-ts-app cd my-ts-app</code>
Package Initialization: Initialize a package.json
file:
<code class="language-bash">npm init -y</code>
Dependency Installation: Install the required dependencies:
<code class="language-bash">npm install --save-dev typescript ts-node @types/node tslib ts-jest rollup rollup-plugin-esbuild nodemon jest @rollup/plugin-node-resolve @rollup/plugin-commonjs</code>
TypeScript Configuration (tsconfig.json
): Configure TypeScript for the Node.js environment:
<code class="language-json">{ "compilerOptions": { "target": "ESNext", "module": "ESNext", "outDir": "./dist", "strict": true, "esModuleInterop": true, "moduleResolution": "node", "skipLibCheck": true, "resolveJsonModule": true, "declaration": true, "sourceMap": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist", "tests"] }</code>
Rollup Configuration (rollup.config.js
): Configure Rollup for production builds:
<code class="language-javascript">import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import esbuild from 'rollup-plugin-esbuild'; export default { input: './src/index.ts', output: { dir: 'dist', format: 'esm', sourcemap: true, banner: '#!/usr/bin/env node' }, plugins: [ resolve(), commonjs(), esbuild({ target: 'esnext', sourceMap: true, minify: true }) ] };</code>
Jest Configuration (jest.config.js
): Configure Jest for testing:
<code class="language-javascript">/** @type {import('ts-jest').JestConfigWithTsJest} **/ export default { testEnvironment: "node", transform: { "^.+.tsx?$": ["ts-jest",{}] } };</code>
Nodemon Configuration (nodemon.json
): Configure Nodemon for automatic reloading:
<code class="language-json">{ "watch": ["src"], "ext": "ts,json", "ignore": ["src/**/*.spec.ts"], "exec": "npm start" }</code>
Create Source Files: Create src/index.ts
and src/functions/addition.ts
(example files provided in original prompt).
Create Test Files: Create test files (e.g., tests/functions/addition.spec.ts
).
Project Structure: Your project should have a structure similar to the one outlined in the original prompt.
npm run build
npm start
npm run dev
npm test
This setup provides a streamlined and efficient environment for developing Node.js applications with TypeScript. Remember to adjust the configurations to fit your specific project needs. This is a foundation for building robust and scalable applications.
The above is the detailed content of A Complete Node.js TypeScript Setup with Rollup, Jest, and Nodemon. For more information, please follow other related articles on the PHP Chinese website!